2016-09-19 4 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

예상되는 동작입니다. npmnode을 생성하고 실행을 완료하는 프록시 일 뿐이므로 처음에는 실행중인 노드 응용 프로그램에 대한 채널이 없었습니다. 이 문제를 해결할 방법이 없습니다.

관련 문제