如何解决在 Node child_process 中检测 python 异常
我注意到,当我使用 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
我从 Python 脚本中获取 hello
,但我无法发现错误。如果我也在 python 脚本中使用 raise Exception('error')
,情况也是如此。
感谢任何见解。
解决方法
为 py.on('exit',code => {})
添加处理程序,如果代码非零,则错误已转储到 stderr,您可以通过 py.stderr.on('data',data => {})
访问该错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。