【发布时间】:2016-09-19 22:20:42
【问题描述】:
当我通过 npm 脚本生成子进程时,我失去了 ipc 通道。
我有一个这样的子脚本
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) })
但是如果我在我的 package.json 中将 node child.js 定义为一个 npm 脚本,例如
"scripts": {
"child": "node child.js"
}
改为这样做spawn('npm', ['run', 'child'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'})
process.send 在我的子脚本中未定义。我想这是因为 npm 现在正在生成该进程,并且该进程不会继承我的 stdio 设置。也许有办法解决这个问题。 npm 脚本文档没有提及该主题。
【问题讨论】: