错误:在node.js中绑定EADDRINUSE null:80

时间:2019-01-04 14:36:48

标签: node.js reactjs mongodb mern

当我使用npm start执行程序时,出现:

Error: bind EADDRINUSE null:80
    at Object.exports._errnoException (util.js:896:11)
    at exports._exceptionWithHostPort (util.js:919:20)
    at cb (net.js:1311:16)
    at rr (cluster.js:620:14)
    at Worker.<anonymous> (cluster.js:590:9)
    at process.<anonymous> (cluster.js:750:8)
    at emitTwo (events.js:111:20)
    at process.emit (events.js:191:7)
    at handleMessage (internal/child_process.js:718:10)
    at Pipe.channel.onread (internal/child_process.js:444:11)
CLUSTER: Worker 177 disconnected from the cluster.
CLUSTER: Worker 177 died with exit code 1 (null)
CLUSTER: Worker 181 started
events.js:160
      throw er; // Unhandled 'error' event

如果将端口从80更改为8080,程序将执行,但不连接到api.localhost:3000

2 个答案:

答案 0 :(得分:1)

EADDRINUSE表示“ E 错误 ADD 使用中

所以您可能还有另一个进程正在监听端口80

在linux上,您可以使用命令netstat -a | grep LISTENING | grep 80

列出正在使用的端口。

答案 1 :(得分:0)

作为特权用户,您应该能够使用以下命令列出引用TCP端口80的进程:

netstat -plant | grep LISTENING | grep :80

在右列上,您应该找到一个进程名称和相应的PID,该名称将指示谁在该端口上进行监听。

如今,使用基于debian或el7的系统,通常需要安装net-tools软件包,并附带netstat命令。

如Gregory NEUT所建议,也许您没有对:80绑定足够的特权。尽管是AFAIR,在这种情况下,您应该会遇到EACCESS错误。而EADDRESSINUSE表示另一个应用程序已经在监听TCP:80。它甚至可能是您的应用程序的先前副本,在后台运行。