通过 npm 脚本生成时从子进程向父进程发送消息
Posted
技术标签:
【中文标题】通过 npm 脚本生成时从子进程向父进程发送消息【英文标题】:Sending a message from child to parent process when spawned via npm script 【发布时间】: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 脚本文档没有提及该主题。
【问题讨论】:
【参考方案1】:这是预期的行为。 npm
只是一个代理,它会产生 node
并完成执行,所以你从一开始就没有通道到正在运行的节点应用程序。没有办法解决这个问题。
【讨论】:
以上是关于通过 npm 脚本生成时从子进程向父进程发送消息的主要内容,如果未能解决你的问题,请参考以下文章