将子进程的输出保存在 NodeJS 父进程的变量中

Saving the output of a child process in a variable in the parent in NodeJS

我想在 NodeJS 中启动一个子进程并将其输出保存到一个变量中。以下代码将其提供给标准输出:

require("child_process").execSync("echo Hello World", {"stdio": "inherit"});

我想到了与此代码类似的内容:

var test;
require("child_process").execSync("echo Hello World", {"stdio": "test"});
console.log(test);

test 的值应该是 Hello World

这不起作用,因为 "test" 不是有效的 stdio 值。

也许这可以使用环境变量,但是我没有找到如何在子进程中修改它们,结果仍然对父进程可见。

execSync 是一个函数,它 returns 您传入的命令的标准输出,因此您可以将其输出存储到一个变量中以下代码:

var child_process = require("child_process");
var test = child_process.execSync("echo Hello World");
console.log(test);
// => "Hello World"

请注意,如果进程的退出代码不为零,这将引发错误。另请注意,您可能需要使用 test.toString(),因为 child_process.execSync 可以 return 和 Buffer