这是一个不触发子进程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 事件并检查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');
  }
});

10-06 07:30
查看更多