当通过npm脚本产生一条消息从子进程到父进程

当通过npm脚本产生一条消息从子进程到父进程

问题描述:

当我通过一个npm脚本产生一个子进程时,我失去了ipc通道。当通过npm脚本产生一条消息从子进程到父进程

我有这样

if (process.send) { process.send('child') } 

孩子脚本,如果产卵它像这样另一个脚本,父进程将成功接收并打印消息

var spawn = require('child_process').spawn 
spawn('node', ['child.js'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'}) 

spawn.on('message', function (msg) { console.log(msg) }) 

但是如果我定义node child.js为我的package.json中的一个npm脚本,如

"scripts": { 
    "child": "node child.js" 
} 

an d代替spawn('npm', ['run', 'child'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'})

process.send在我的子脚本中是未定义的。我想这是因为npm现在正在产生该进程,并且该进程不会继承我的stdio设置。也许有一种解决方法。 npm脚本文档没有提到该主题。

这是一个预期的行为。 npm只是一个代理,它会产生node并完成执行,因此您从来没有通过运行节点应用程序的渠道。这是没有办法的。