Node.js child_process.exect stdout return null,但 stderr 没有

Node.js child_process.exect stdout return null, but stderr did not

目前,我有这个简单的代码执行 java -version 到命令行来检查用户是否安装了 Java。

奇怪,当我 运行 这段代码时,stdout 什么也没给我,但是 stderr 给了我想要的结果。

cprocess.execSync("java -version", (err, stdout, stderr) => {
  console.log("stdout: " + stdout); // nothing
  console.log("stderr: " + stderr); // output: java version
}

为什么会这样?我需要更改 exec 选项中的任何内容吗?

execSync 不接受回调参数,但 exec 接受。问题的文本引用了 exec,而您分享的代码片段引用了 execSync,所以我猜您的意思是 exec.

假设您真的打算使用 exec,回调是正确的,问题不在于代码,而是您正在调用的 java -version 命令 - 该命令输出信息到 stderr,而不是 stdout。您可以重定向它,但老实说,我不会打扰 - 您可以只使用 stderr 输出。