我注意到,当我使用child_process
spawn()方法在Node.js中生成python脚本时,我无法捕获异常。
这是一个简单的例子来说明:
index.js:
const spawn = require('child_process').spawn;
(() => {
const py = spawn('python', ['../pyfun/main.py']);
py.stdout.on('data', function(data){
console.log(data.toString());
});
py.stdout.on('end', function(){
console.log('Finished');
});
py.stdout.on('error', function(){
console.log('* Error');
});
py.on('error', (err) => {
console.error('**', err);
});
py.stderr.on('error', (err) => {
console.log('*** Error', error);
})
})();
main.py:
def main():
print('Hello')
raise ValueError('Python Error')
if __name__ == '__main__':
main()
输出是
Hello // <-- from python
Finished // <-- from Node
我正在hello
从Python脚本中获取,但无法获取错误。如果我raise Exception('error')
也在python脚本中使用,也是这种情况。
任何见解表示赞赏。
添加一个处理程序py.on('exit', code => {})
,如果代码为非零,则错误已转储至stderr,您可以通过以下方式访问py.stderr.on('data', data => {})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句