NodeJS spawn stdout string format

node.js, spawn, stdout

Solution

Streams are buffered and emit `data` events whenever they please (so to speak), not on strict boundaries like lines of text.

But you can use the `readline` module to parse the buffers into lines for you:

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);
});

Problem

I'm spawning a process in node and tracking the output of the command like this: ``` proc.stdout.on("data", function (data) { console.log(data.toString()); }); ``` It works well, however, the output seems to be splitting the lines: ``` npm http 304 https://registry.npmjs.org/underscore ``` The above is just one line out of the response from an `npm install`. Typically this is all in one line, it's also adding line breaks before and after the response. Is there a way to get the data output to look like the standard run, i.e. line-by-line?

Original source