执行nodejs并在出错时获取输出

时间:2018-02-11 11:34:17

标签: node.js go error-handling exec testcafe

我正在尝试通过exec在我的二进制文件中触发命令来获取另一个脚本的JSON输出。另一个脚本是nodejs任务检查html问题。 如果我在cli上触发nodeJS任务一切正常并且我得到了JSON输出,但是如果我在go里面发出命令我只得到:

  

退出状态1

我不确定问题是nodejs还是go问题,但即使nodejs发现了HTML问题,我希望能够在我的go脚本中分析JSON响应。

这是我的源代码:

out, err := exec.Command("/usr/bin/testcafe", "'chromium:headless --no-sandbox'", "--reporter json", "/data/checks.js").Output()
status := http.StatusOK
message := ""
if err != nil {
    status = http.StatusNotImplemented
    message = err.Error() + string(string(out[:]))
    fmt.Println(message)
}

2 个答案:

答案 0 :(得分:2)

如上所述,如果您需要从Golang的Command Exit访问Stderr,请使用:

message += string(err.(*exec.ExitError).Stderr[:])

在我的情况下,nodejs工具根据问题的数量给出了退出代码。解决了这个问题,现在运行得很好=)。

答案 1 :(得分:1)

我创建了一个用于执行shell命令的函数: https://gist.github.com/leninhasda/8f2b5cdc22677a8f2bdf2e896eb0b561

stdOut, stdErr, err := ShellExec("echo", "hello", "world")
if err != nil {
    // error executing command
}

if stdErr != "" {
    // shell command returned error message
}

if stdOut != "" {
    // shell command returned output message
    // hello world
}