【问题标题】:Sending a message from child to parent process when spawned via npm script通过 npm 脚本生成时从子进程向父进程发送消息
【发布时间】: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 脚本文档没有提及该主题。

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    这是预期的行为。 npm 只是一个代理,它会产生 node 并完成执行,所以你从一开始就没有通道到正在运行的节点应用程序。没有办法解决这个问题。

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 2016-02-25
      • 1970-01-01
      • 2019-04-11
      相关资源
      最近更新 更多