Vite 2 无法启用开发服务器,提示 listen EACCES permission denied 0.0.0.0:3000 但本地端口并未占用的问题

最近在 Windows 10 上使用 Vite 2 开发时经常遇到无法启动开发服务的情况,提示如下:

1
2
3
4
5
6
error when starting dev server:
Error: listen EACCES: permission denied 0.0.0.0:3000
at Server.setupListenHandle [as _listen2] (node:net:1317:21)
at listenInCluster (node:net:1382:12)
at doListen (node:net:1520:7)
at processTicksAndRejections (node:internal/process/task_queues:84:21)

一眼看过去稍微有经验的开发者都清楚应该去排查端口占用问题,如果你看到本文时还没有检查过你的设备端口占用情况,建议先去检查一遍。

奇怪的是检查发现端口不存在被占用的情况。

第一次遇到这个问题时,用最直接的方式,更换端口解决了这个问题,但更换后仍然会遇到。这么一直换端口也不是事儿,为了搞清楚原因特地搜索了一下,发现是和电脑的网络有关系。

总结一下,导致这次问题的原因是电脑中的网络适配器变化导致的。例如我的电脑安装了 Docker 新增了一些 vEthernet (…) 之类的网络适配器,禁用这些适配器就能解决问题。

另外例如蓝牙适配器等也会被算作网络连接从而导致问题,因为当我遇到这个问题时,尝试将电脑的蓝牙关闭之后就恢复正常了。

结合错误提示,猜测具体的原因是项目监听了 0.0.0.0 的 IP 代表监听本机所有网卡,同时因为部分网卡 NodeJS 没有权限操作,所以导致了上面的错误情况。

详细内容可以在下面这个连接查看:

Error: listen EACCES: permission denied 0.0.0.0:3000

上面的原因只是其中一种可能性,所以如果你尝试了之后没有解决问题,那么导致问题的原因可能不是本文所提到的,你需要另行寻找。