从child_process.spawn中检索shell错误输出

我正在使用child_process.spawn并需要捕获命令失败时发生的shell错误。 根据这个问题 ,我应该可以做到:

 var child_process = require('child_process'); var python = child_process.spawn( 'python', ["script.py", "someParam"] ); python.on('error', function(error) { console.log("Error: bad command", error); }); 

当我用banana代替'python', ["script.py", "someParam"] ,就像链接的问题一样,它工作正常,错误是可见的。 但在我的情况下,使用python与参数,“错误”事件永远不会被调用。

我如何从python捕获shell错误?

根据ChildProcess error事件的Node.js文档,只能在几种情况下触发:

  1. 这个过程不能产生,或者
  2. 这个过程不能被杀死,或者
  3. 无论出于何种原因,向subprocess发送消息都失败。

要捕获shell错误输出,还可以在产生的进程的stdoutstderr上监听data事件:

 python.stdout.on('data', function(data) { console.log(data.toString()); }); python.stderr.on('data', function(data) { console.error(data.toString()); }); 

要捕获shell错误代码,您可以将一个侦听器附加到exit事件:

 python.on('exit', function(code) { console.log("Exited with code " + code); });