如何修复任何端口上的“listen EACCES:权限被拒绝”

Nac*_*eja 25 node.js windows-subsystem-for-linux npm

有没有人用 node 经历过这样的事情:

我正在运行Angular,我的 Windows 崩溃并重新启动,现在当我尝试时,ng serve我得到:

Error: listen EACCES: permission denied 127.0.0.1:4200
    at Server.setupListenHandle [as _listen2] (net.js:1253:19)
    at listenInCluster (net.js:1318:12)
    at GetAddrInfoReqWrap.doListen [as callback] (net.js:1451:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)
Run Code Online (Sandbox Code Playgroud)

我也试过 ng serve --port 4201

结果一样。

注意:在Windows重新启动之前,我在WSL. 之后,我尝试WSLPowershell

更新:它甚至发生在一个新项目中。

Nac*_*eja 22

一次 Windows 重新启动是不够的,我重新启动了两次,问题就消失了。

对不起,我没有更多的技术。

除了: 1:尽量不要从 Windows 文件夹在 WSL 上进行开发。

  • 你通过重新启动 Windows 两次拯救了我的一天。 (2认同)
  • 我很高兴能帮助你。这不是一个漂亮的答案,但也不是一个漂亮的问题。 (2认同)

fam*_*osi 22

在我的情况下,出现错误是因为使用的端口属于 Hyper-V 的保留端口。

当我重新启动计算机时,此端口范围会发生变化,因此有时会出现错误,有时不会。

要通过 Windows 检查保留端口,您可以使用(cmd/powershell):

netsh interface ipv4 show excludedportrange protocol=tcp
Run Code Online (Sandbox Code Playgroud)

该问题描述于:https : //github.com/microsoft/WSL/issues/5514

一般解决方法(在评论 554587817 中):https : //github.com/docker/for-win/issues/3171#issuecomment-554587817

快速解决方法:选择一个不属于保留范围的端口


小智 14

感谢 @fambrosi 找到该线程和https://github.com/docker/for-win/issues/3171#issuecomment-788808021。这是解决这个恼人问题的命令。

net stop winnat
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
net start winnat
Run Code Online (Sandbox Code Playgroud)

  • 只是停止并重新启动对我有用。谢谢! (5认同)