如何使用javascript child_process.execFile从文件中获取退出代码

时间:2019-05-04 06:03:26

标签: javascript node.js return-value child-process exit-code

这是我的python代码:

#!/bin/python
import sys
sys.exit(4)

这是我的JavaScript

var exec = require('child_process').execFile
exec('./script.py', (err, data) => { if(err) { console.log(err.status) } })

但是它不起作用,因为没有err.status之类的东西 我要在控制台日志中显示的是“ 4”。

2 个答案:

答案 0 :(得分:2)

没有err.status,但是有err.code

这应该有效:

var exec = require('child_process').execFile
exec('./script.py', (err, data) => { if(err) { console.log(err.code) } })

还有err.signalerr.killed

从nodejs文档中:

  

成功后,错误将为null。发生错误时,错误将是的一个实例   错误。 error.code属性将是子级的退出代码   error.signal将被设置为终止的信号时进行处理   过程。任何非0的退出代码都被视为错误。

https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback

答案 1 :(得分:1)

execFile的回调获得3个参数:

  • error(如果有)。
  • stdout,流程的标准输出。
  • stderr,流程的标准。

因此,通过检查stderr,您应该能够获得预期的结果:

var exec = require('child_process').execFile
exec('./script.py',(err,stdout,stderr)=>{console.log(stderr)})

Node.js docs

中查看