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 输出。
目前,我有这个简单的代码执行 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 输出。