2017-06-29 48 views
2

這裏捕捉錯誤就是子進程error沒有解僱一個例子:從催生Node.js的過程

const spawn = require('child_process').spawn; 
const childProcess = spawn('tar', ['--wrong-option'], { stdio: 'inherit' }); 

childProcess.on('error', err => { 
    console.error('err: ', err); 
}); 

爲什麼會這樣呢?如何從產生的過程中捕獲錯誤(特別是錯誤代碼)?

回答

4

error只有當產生孩子本身導致問題時纔會生成事件;例如,當可執行文件不存在時。

要由子進程捕獲錯誤「拋出」,你應該聽exit事件,並檢查codesignal參數:

childProcess.on('exit', (code, signal) => { 
    if (code) { 
    console.error('Child exited with code', code) 
    } else if (signal) { 
    console.error('Child was killed with signal', signal); 
    } else { 
    console.log('Child exited okay'); 
    } 
}); 
+0

謝謝,這是有道理的! – estus