[英]Node child process spawn output is different than from terminal
当我运行下面的代码时,我没有看到与直接通过终端运行此命令相同的输出到控制台。 知道为什么吗? 除了stdout.on('data')
之外,还有其他函数可以吐出更多信息吗?
具体来说,当我通过终端运行它时,会得到一个进度条,指示命令完成的百分比。 当我通过节点运行它时,它会吐出一些较早的类似信息,然后停止一会儿,直到命令完成。
var sh = spawn('sh', ['app/scripts/scriptA.sh', path]);
sh.stdout.on('data', function (data) {
console.log(data.toString());
});
有一些区别。
可能是您缺少stderr
( sh.stderr.on('data', ...)
)。
另一种可能性,特别是如果它是类似于进度条的东西,正在重写该行,那么console.log()
将无法做到这一点。
这些进度条的工作方式是结合使用process.stdout.write()
和process.stdout.cursorTo()
以及process.stdout.clearLine()
,这实际上使它们可以擦除并重写一行。 通过console.log
将data
内容输出将有很大不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.