Nodejs v6:exec"闭包编译器"标准输出总是空的

时间:2016-05-29 19:09:04

标签: node.js

我尝试从nodejs执行CC:

// already tried exec, spawn
process.execFile('java', [
        '-jar', 'CC-path', '-js', 'js-path', 'other-options'
    ],
    (error, stdout) => {
        if (error != null) {
            throw error    // if there is any errors then will showed in terminal
        }
        console.log(stdout.toString())    // but stdout always empty when no errors exist
    }
)
// I have tested by manual running the command in terminal and got output:
// "...many lines before"
// 0 error(s), 10 warning(s), 74.2% typed

我怎样才能获得所有" Nodejs exec"输出就像我在终端手动输入命令一样?

1 个答案:

答案 0 :(得分:1)

.execFile()接受一个回调,获得三个参数(err, stdout, stderr)。您应该记录所有三个以查看发生了什么。我的猜测是stderr上有一些你忽略的东西。如果有问题,您也无法登录err

process.execFile('java', [
        '-jar', 'CC-path', '-js', 'js-path', 'other-options'
    ], (error, stdout, stderr) => {
        if (error) {
            console.log(error);
            return;
        }
        console.log("stdout: ", stdout);
        console.log("stderr: ", stderr);
    }

此外,您的throw error可能无用,因为在常规异步回调中执行throw只会引入child_process库的内容,而不是任何可以捕获它的地方。