每次我运行cluster.fork(),我得到一个错误:绑定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)
我一直在Google上search,我不知道这是怎么发生的,因为我没有通过任何端口号。
谢谢
编辑:张贴代码
var setupWorkers = function() { if (cluster.isMaster) { // Fork workers. for (var i = 0; i < 5; i++) { cluster.fork(); } }
这是一个函数,我通过调用节点app.js运行的app.js中调用
您提供的堆栈跟踪表明EADDRINUSE
来自net
模块。 EADDRINUSE
通常意味着您尝试EADDRINUSE
地侦听IP /端口组合。 所以,例如,如果这是一个群集的Web服务器,也许所有的工作人员都试图绑定到同一个IP地址上的端口80。 没有更多的代码,就不可能知道发生了什么事情。
您在随后的评论中给出的示例代码不会为我引发EADDRINUSE
。 相反, cluster.fork is not a function
错误cluster.fork is not a function
因为在调用cluster.fork()
之前没有检查cluster.isMaster
。
我在所有的线程上多次启动一个服务器,所以这个端口已经绑定了