NodeJS产生标准输出string格式

我在节点中产生一个进程,跟踪这个命令的输出:

proc.stdout.on("data", function (data) { console.log(data.toString()); }); 

它运作良好,但是,输出似乎是分裂的线路:

 npm http 304 https://registry.npmjs.org/underscore 

以上只是npm install响应的一行。 通常情况下,这一切都在一行中,这也是在响应之前和之后添加换行符。 有没有办法让数据输出看起来像标准运行,即逐行?

数据stream被缓冲并随时发出data事件(可以这么说),而不是像文本行那样严格的边界。

但是您可以使用readline模块为您parsing缓冲区为行:

 var child_process = require('child_process'); var readline = require('readline'); var proc = child_process.spawn(...); readline.createInterface({ input : proc.stdout, terminal : false }).on('line', function(line) { console.log(line); }); 

有三个解决scheme,想到:

 // solution #1 process.stdout.write(data); // solution #2 console.log(data.toString().replace(/[\n\r]/g, "")); // solution #3 var child_process = require('child_process'); var readline = require('readline'); var proc = child_process.spawn(...); readline.createInterface({ input: proc.stdout, terminal: false }).on('line', function(line) { console.log(line); });