繁体   English   中英

节点子进程生成的输出与终端不同

[英]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());
});

有一些区别。

可能是您缺少stderrsh.stderr.on('data', ...) )。

另一种可能性,特别是如果它是类似于进度条的东西,正在重写该行,那么console.log()将无法做到这一点。

这些进度条的工作方式是结合使用process.stdout.write()process.stdout.cursorTo()以及process.stdout.clearLine() ,这实际上使它们可以擦除并重写一行。 通过console.logdata内容输出将有很大不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM