问题描述
目前,我有一个简单的代码,它在命令行中执行 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 ,不是标准输出。你可以重定向它,但老实说,我不会打扰 - 你可以只使用 stderr 输出。