当我运行下面的代码时,我没有得到相同的输出到控制台,因为我看到我是否通过终端直接运行此命令。有什么想法吗?除stdout.on('data')
之外还有其他函数可以发出更多信息吗?
具体来说,当我通过终端运行它时,我会得到一个类别的进度条,表示命令完成的百分比。当我通过节点运行它时,它会吐出一些早期类似的信息,然后停止一段时间直到命令完成。
var sh = spawn('sh', ['app/scripts/scriptA.sh', path]);
sh.stdout.on('data', function (data) {
console.log(data.toString());
});
答案 0 :(得分:1)
存在一些差异。
可能是您错过了stderr
(sh.stderr.on('data', ...)
)上的内容。
另一种可能性,特别是如果它是重写行的类似进度条的东西,那么console.log()
将无法做到这一点。
这些进度条的工作原理是它们使用process.stdout.write()
和process.stdout.cursorTo()
以及process.stdout.clearLine()
的组合,实际上可以让它们擦除并重写一行。将其从console.log
data
中提取出来将会产生非常不同的结果。