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)。