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