【发布时间】:2017-01-08 06:45:57
【问题描述】:
有人知道如何在 Windows 上运行 Node Cluster 吗?我在网上找不到任何文章,似乎无法解决这个问题:
events.js:160
throw er; // Unhandled 'error' event
^
Error: write ENOTSUP
at exports._errnoException (util.js:1007:11)
at ChildProcess.target._send (internal/child_process.js:634:20)
at ChildProcess.target.send (internal/child_process.js:521:19)
at sendHelper (cluster.js:751:15)
at send (cluster.js:534:12)
at cluster.js:509:7
at SharedHandle.add (cluster.js:99:3)
at queryServer (cluster.js:501:12)
at Worker.onmessage (cluster.js:449:7)
at ChildProcess.<anonymous> (cluster.js:765:8)
还有代码……
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('online', (worker) => {
console.log('Worker ' + worker.process.pid + ' is online');
});
cluster.on('exit', (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died with code ${code} and signal ${signal}`);
});
} else {
console.log('else part ');
openPort();
}
function openPort() {
let server = dgram.createSocket('udp4');
server.bind(port, host);
server.on('message', processMessage);
}
【问题讨论】:
-
这段代码对我有用 - 你的其余代码在哪里,你的 Node.js 版本是什么。
-
你运行的是什么版本的 node.js。 This bug report 建议去年修复了该区域中 Windows 上的错误。我不确定该修复程序放入了哪些版本。
-
另外,
openPort()是做什么的? -
在 Windows 上使用集群时,此类错误的根本原因似乎是在集群中使用了 UDP 套接字。您知道您是这样做还是使用使用 UDP 的库?如果是这样,似乎可以通过以适当的方式绑定 UDP 套接字来解决一些问题。如果你阅读this discussion,你会得到更多的细节。
-
抱歉延迟回复。我编辑了代码以包含 openPort 函数。是的,它是UDP。节点版本也是 6.2.2。更重要的是它可以在 Linux 上用于生产,想知道是否有办法兼容两者? @jfriend00 那个链接好像是fixed the problem?谢谢。
标签: javascript node.js multithreading worker node-cluster