这是一个不触发子进程error
的示例:
const spawn = require('child_process').spawn;
const childProcess = spawn('tar', ['--wrong-option'], { stdio: 'inherit' });
childProcess.on('error', err => {
console.error('err: ', err);
});
为什么会这样呢?如何从生成的过程中捕获错误(特别是错误代码)?
最佳答案
error
事件仅在生成 child 本身引起问题时生成;例如,当可执行文件不存在时。
要捕获子进程“抛出”的错误,您应该监听 exit
事件并检查code
和signal
参数:
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');
}
});