NodeJS subprocess.send()以静默方式失败



我使用child_process.fork()生成一个子进程,但通过subprocess.send()从父进程到子进程的调用以静默方式失败(尽管在subprocess.on('spawn')回调中发生(;具体地说,儿童的process.on('message')不触发。奇怪的是,通过process.send()从孩子打给父母的电话工作得很好。对subprocess.send的调用返回true,根据文档,这意味着它成功了;并且不会从孩子触发错误。

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和孩子的process.connected都是true

这是一个错误,自v15.1中添加spawn事件以来一直存在:nodejs/node#3782

它只发生在ESM(import(中,而不发生在commonjs(require(中。

最新更新