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); });
- 错误:使用非root用户使用Node.js child_process时,在errnoException(child_process.j2:980:11)处产生ENOENT
- 使用节点jsclosures.exe文件
- Nodejs如何等待subprocess退出或允许响应
- Nodejssubprocess在容器docker中产生
- 用自己的控制台窗口产生新的subprocess
- 为什么nodejs产生的进程变成<defunct>直到父进程退出
- Node.js同步返回多个asynchronous收益的结果
- 我怎样才能禁用nodejs ChildProcess.spawn标准输出缓冲区?
- 产生交互式进程并在NodeJS中退出