2015-06-07 29 views
0

我正在嘗試使用nodejs進程spawn。但不知何故,我無法做到這一點。我使用節點v0.12.2。 「gulp do-something」得到執行,我確實通過stdout看到輸出結果..但退出事件從未得到執行!NodeJS process.spawn - 退出事件沒有觸發

var task = spawn('gulp', [ 
     'do-something' 
], { 
     cwd: configs.workingDirectory 
}); 

task.stdout.on('data', function(data){ 
     console.log(data.toString()); 
}); 

task.stderr.on('data', function (data) { 
     console.log(data.toString()); 
}); 

task.on('exit', function (exitCode) { 
     console.log("process.exitCode", exitCode) 
}); 

,當我嘗試使用菌種與標準輸入輸出: 'IPC']

var task = spawn('gulp', [ 
      'do-something' 
    ], { 
      cwd: configs.workingDirectory, 
      stdio: ['ipc'] 
    }); 

退出事件被炒魷魚,但在錯誤發生後:

gulp: ../deps/uv/src/unix/core.c:833: uv__io_stop: Assertion `loop->watchers[w->fd] == w' failed. 

我試過其他的組合爲STDIO。它會導致task.stdout和task.sterr爲空或退出事件未被解僱。

+0

'close'會散發出來嗎? – mscdex

+0

@mscdex不,它不。 – Johny

+0

好的。我設法使用:stdio:[0,'pipe','pipe'] – Johny

回答

1

設置stdio: [0, 'pipe', 'pipe']解決了問題!