在Windows上开发项目,启动 node 或 Java 项目时,有时会报错:Error: listen EACCES: permission denied 0.0.0.0:8882
一般是由于其他程序占用了端口号,可以使用命令:netstat -ano | findstr 8882
查找端口被哪个程序占用,找到后将其关闭,即可正常启动应用程序。
我使用以上命令后输出为空,这意味着没有程序占用该端口,这可能是端口被保留,无法被其他程序绑定导致,可以使用命令:netsh int ipv4 show excludedportrange tcp
这个的原因是启用 Hyper-V 之后,其会为宿主网络服务随机保留一些端口号,有时这个范围的起始端口会被设置为 1024,导致一些端口被保留,无法使用,可以使用命令:netsh int ipv4 show dynamicport tcp
此时,可以重启电脑或使用命令 net stop winnat
停止 winnat 服务,然后再启动:net start winnet
使其重新随机一些端口,有概率可以避开要使用的端口。
也可以使用命令:netsh int ipv4 set dynamic tcp start=45000 num=13977
将其起始端口号修改靠后,从而做到不影响应用启动,执行完命令后再使用 net stop winnat
和 net start winnet
重启,即可看到被保留的端口号都靠后,不影响应用启动了。
留言