Javascript 如何截取node.js中命令的输出流并将其保存到变量?

Javascript 如何截取node.js中命令的输出流并将其保存到变量?,javascript,node.js,stream,spawn,Javascript,Node.js,Stream,Spawn,我有一个脚本,它正确地同步运行ls命令,并将结果输出到终端。如何截取结果并将其保存到变量 const cp = require('child_process'); const result = cp.spawnSync( 'ls', ['-l', '/usr'], { stdio: [process.stdin, process.stdout, process.stdout] } ); 如果我尝试这个,正如 我明白了 区别在于关于spawnSync而不是spawn通过查

我有一个脚本,它正确地同步运行
ls
命令,并将结果输出到终端。如何截取结果并将其保存到变量

const cp = require('child_process');
const result = cp.spawnSync(
    'ls',
    ['-l', '/usr'],
    { stdio: [process.stdin, process.stdout, process.stdout] }
);
如果我尝试这个,正如

我明白了

区别在于关于
spawnSync
而不是
spawn

通过查看,我们可以看到
spawnSync
的结果返回一个包含名为
stdout
的键的对象,该键是一个
缓冲区。您不必侦听事件,因为您正在调用同步版本的
spawn
——进程将等待命令完成执行后再继续,然后返回结果


因此,在您的情况下,可以使用
result.stdout.toString()
读取
ls-l/usr
命令的结果。您还需要在选项中保留
stdio
的默认配置。

请在发布之前。更多关于搜索的信息。我找到了
spawn
的内容,但还没有找到
spawnSync
的内容。继续搜索我得到的
无法读取null的属性“toString”
,我想知道我做错了什么…我尝试了你的代码,如果你不指定任何自定义
stdio
配置,它就会工作(完全删除了选项)
result.stdout.on('data', function (chunk) {
    console.log(chunk);
});
result.stdout.on('data', function (chunk) {
              ^
TypeError: Cannot read property 'on' of null