NodeJS subprocess.send() 静默失败
NodeJS subprocess.send() fails silently
我正在使用 child_process.fork()
生成一个 child 进程,但是通过 subprocess.send()
从 parent 到 child 的调用静默失败(尽管发生了在 subprocess.on('spawn')
回调中);具体来说,child 的 process.on('message')
不会触发。奇怪的是,从 child 通过 process.send()
调用 parent 工作得很好。调用 subprocess.send returns true
,根据文档,这意味着它是成功的; child.
不会触发任何错误
Parent.js:
const subprocess = fork(…);
subprocess.on('error', console.error);
subprocess.on('message', console.log);
// subprocess.on(eventName, console.log) for all other events
subprocess.on('spawn', () => {
subprocess.send({ hello: 'child' }); // return's boolean `true`
});
Sub.js:
process.on('message', console.log); // nothin'
process.send({ hello: 'parent' }); // ← parent's on message triggered
subprocess.connected
和child的process.connected
都是true
这是一个错误,自从在 v15.1 中添加了 spawn
事件以来就一直存在:nodejs/node#37782
它只出现在 ESM (import
) 而不是 commonjs (require
)。
我正在使用 child_process.fork()
生成一个 child 进程,但是通过 subprocess.send()
从 parent 到 child 的调用静默失败(尽管发生了在 subprocess.on('spawn')
回调中);具体来说,child 的 process.on('message')
不会触发。奇怪的是,从 child 通过 process.send()
调用 parent 工作得很好。调用 subprocess.send returns true
,根据文档,这意味着它是成功的; child.
Parent.js:
const subprocess = fork(…);
subprocess.on('error', console.error);
subprocess.on('message', console.log);
// subprocess.on(eventName, console.log) for all other events
subprocess.on('spawn', () => {
subprocess.send({ hello: 'child' }); // return's boolean `true`
});
Sub.js:
process.on('message', console.log); // nothin'
process.send({ hello: 'parent' }); // ← parent's on message triggered
subprocess.connected
和child的process.connected
都是true
这是一个错误,自从在 v15.1 中添加了 spawn
事件以来就一直存在:nodejs/node#37782
它只出现在 ESM (import
) 而不是 commonjs (require
)。