前言
有時在開啟 Node 執行起來時,會噴 Error: listen EACCES: permission denied 0.0.0.0:3000
(3000 為專案使用的 Port) 的錯誤,如下,
error Failed to start server
Error: listen EACCES: permission denied 0.0.0.0:3000
at Server.setupListenHandle [as _listen2] (node:net:1723:21)
at listenInCluster (node:net:1788:12)
at Server.listen (node:net:1876:7)
code: ‘EACCES’,
errno: -4092,
解法
有時可以換別的 Port Number ,但是有時一大堆的 Port 都不能使用,
要一個個換也蠻麻煩的。
要看 port 有沒有被佔住,可以執行 netsh interface ipv4 show excludedportrange protocol=tcp
來看一下,
看看要用的 port 有在那些 Range 之中。
![excludedportrange](/2023/07/13/node-js-listen-eacces-permission-denied-3000/01.png)
解法可以將 winnat 服務重新啟動,
以系統管理者身份執行 命令視窗,執行 net stop/start winnat
,
應該就可以了,如下,
1 | net stop winnat |
![net stop](/2023/07/13/node-js-listen-eacces-permission-denied-3000/02.png)
- 註: 除了 node js 專案外,只要是 port 沒發現被別的 process 佔住,就可以用這個方式來解看看哦~
參考資源
Node.js EACCES error when listening on most ports
Ports are not available: listen tcp 0.0.0.0:3000: bind: An attempt was made to access a socket in a way forbidden by its access permissions.