有什么方法可以在节点 js 的工作线程中使用 parentPort.on() server.listen()
Is there any way to use parentPort.on() in worker threads in node js with server.listen()
每当我尝试使用具有
的工人时
工人档案=>
parentPort.on('message',msg =>{
//some code here
})
主文件=>
server.listen(3000,function(){
console.log('Server running');
});
如果服务器已经在侦听,则会出现此错误
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
at Server.setupListenHandle [as _listen2] (net.js:1314:16)
at listenInCluster (net.js:1362:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1499:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:68:8)
Emitted 'error' event on Worker instance at:
at Worker.[kOnErrorMessage] (internal/worker.js:233:10)
at Worker.[kOnMessage] (internal/worker.js:243:37)
at MessagePort.<anonymous> (internal/worker.js:164:57)
at MessagePort.emit (events.js:315:20)
at MessagePort.onmessage (internal/worker/io.js:78:8)
at MessagePort.exports.emitMessage (internal/per_context/messageport.js:11:10) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '127.0.0.1',
port: 3000
}
我试过使用 MessageChannel() 但它也给出了同样的错误。
请问是什么原因导致的错误,如何改正。
EADDERINUSE 听起来您正试图在主文件和工作线程中的同一端口上启动新服务器。
您需要确保您没有尝试在工作线程中启动服务器,或者如果您想要在工作线程中启动服务器,那么它们每个都必须位于唯一的端口上。
每当我尝试使用具有
的工人时
工人档案=>
parentPort.on('message',msg =>{
//some code here
})
主文件=>
server.listen(3000,function(){
console.log('Server running');
});
如果服务器已经在侦听,则会出现此错误
Error: listen EADDRINUSE: address already in use 127.0.0.1:3000
at Server.setupListenHandle [as _listen2] (net.js:1314:16)
at listenInCluster (net.js:1362:12)
at GetAddrInfoReqWrap.doListen [as callback] (net.js:1499:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:68:8)
Emitted 'error' event on Worker instance at:
at Worker.[kOnErrorMessage] (internal/worker.js:233:10)
at Worker.[kOnMessage] (internal/worker.js:243:37)
at MessagePort.<anonymous> (internal/worker.js:164:57)
at MessagePort.emit (events.js:315:20)
at MessagePort.onmessage (internal/worker/io.js:78:8)
at MessagePort.exports.emitMessage (internal/per_context/messageport.js:11:10) {
code: 'EADDRINUSE',
errno: -98,
syscall: 'listen',
address: '127.0.0.1',
port: 3000
}
我试过使用 MessageChannel() 但它也给出了同样的错误。 请问是什么原因导致的错误,如何改正。
EADDERINUSE 听起来您正试图在主文件和工作线程中的同一端口上启动新服务器。
您需要确保您没有尝试在工作线程中启动服务器,或者如果您想要在工作线程中启动服务器,那么它们每个都必须位于唯一的端口上。