Everytime I run cluster.fork(), I get a Error: bind EADDRINUSE

Everytime I run cluster.fork(), I get a Error: bind EADDRINUSE

我正在使用 node.js,并且正在使用集群模块。每次我 运行 cluster.fork(),我总是得到一个

throw er; // Unhandled 'error' event
Error: bind EADDRINUSE
    at exports._errnoException (util.js:746:11)
at cb (net.js:1205:33)
at rr (cluster.js:592:14)
at Worker.<anonymous> (cluster.js:563:9)
at process.<anonymous> (cluster.js:692:8)
at process.emit (events.js:129:20)
at handleMessage (child_process.js:324:10)
at Pipe.channel.onread (child_process.js:352:11)

我一直在用谷歌搜索这个,但我不知道这是怎么回事,因为我没有传递任何端口号。

谢谢

编辑:发布代码

var setupWorkers = function() {
   if (cluster.isMaster) {
   // Fork workers.
       for (var i = 0; i < 5; i++) {
       cluster.fork();
   }

 }

这是在 app.js 中调用的函数,我 运行 通过调用节点 app.js

您提供的堆栈跟踪表明 EADDRINUSE 来自 net 模块。 EADDRINUSE 通常意味着您正在尝试多次收听 IP/port 组合。因此,例如,如果这是一个集群 Web 服务器,则可能您的所有工作人员都试图绑定到同一 IP 地址上的端口 80。没有更多的代码,就不可能知道发生了什么。

您在后续评论中给出的示例代码对我来说不会触发 EADDRINUSE。取而代之的是 cluster.fork is not a function 错误,因为在调用 cluster.fork().

之前没有检查 cluster.isMaster

我用所有线程启动服务器不止一次,所以端口已经绑定