端口 3000 总是被占用(即使我用 PORT=XYZ 覆盖它)

Port 3000 always taken (even if I override it with PORT=XYZ)

我有一个用 React 编写的 WEB 应用程序,每当我尝试 运行 它与 react-app-rewired start 它抱怨 Something is already running on port XYZ

我检查过是否有任何进程正在使用 netstat -a -b 侦听 XYZ 端口,但有 none。此外,如果我将端口 XYZ 更改为任何 4 位值(使用环境变量 PORT=3001),我总是会遇到同样的问题,即端口已被占用,所以我得出的结论是该端口未被占用但是下面发生了一些事情。我在 Windows10 上 运行ning 安装了节点 12(我尝试降级到节点 10,因为我认为这曾经在较低节点版本上对我有用,但我无法让它工作了).

我在网上搜索过,大多数人建议检查端口是否被占用,我发现的其他一些是吼叫但对我不起作用:

有没有人遇到过类似的问题并且能够解决?

尝试:

taskkill /im node.exe

如果进程仍然存在,您可以通过添加 /f 标志强制进程终止:

taskkill /f /im node.exe

事实证明是 Hyper-V 占用了所有端口。...在禁用 Hyper-V 后,我能够 运行 端口 3000 上的节点应用程序.

此问题的解决方法 是在 Hyper-V 关闭时保留端口:

  1. 禁用 hyper-v(需要重启几次)

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

  1. 当您完成所有必需的重启后,保留您想要的端口,这样 hyper-v 就不会再保留它了

netsh int ipv4 add excludedportrange protocol=tcp startport=3000 numberofports=1

  1. 重新启用 hyper-V(需要重启几次)

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

参考文献: