当通过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
并完成执行,因此您从来没有通过运行节点应用程序的渠道。这是没有办法的。