2016-09-19 21 views
1

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" 
} 

これを代わりに行うspawn('npm', ['run', 'child'], {stdio: ['inherit', 'inherit', 'inherit', 'ipc'})

process.send私の子スクリプトでは定義されていません。これはnpmがプロセスを生成しており、そのプロセスが私のstdioの設定を継承していないためだと思います。おそらくこれを回避する方法があります。 npmスクリプトのドキュメントには、このトピックは記載されていません。

答えて

0

これは予想される動作です。 npmは、nodeを生成して実行を終了するプロキシですので、最初に実行中のノードアプリケーションへのチャネルは一度もありませんでした。これを回避する方法はありません。

関連する問題