节点流 - 超出最大调用堆栈

时间:2015-06-03 12:55:54

标签: javascript node.js stream callstack

我似乎无法弄清楚为什么我的流管道出现此错误。我想我已经筋疲力尽了所有的路径,所以我有什么遗失:这就是我所拥有的:

var myCsvStream = fs.createReadStream('csv_files/myCSVFile.csv');
var csv = require('fast-csv');
var myData = [];

var myFuncs = { 
 parseCsvFile: function (filepath) {

  var csvStream;

  csvStream = csv
  .parse({headers: true, objectMode: true, trim: true})
  .on('data', function (data) {

       myData.push(data);

  })
  .on('end', function () {

    console.log('done parsing counties')
  });

  return csvStream;

 }
}

myCsvStream
.pipe(myFuncs.parseCsvFile())
.pipe(process.stdout);

process.stdout只是我可以看到数据可以继续到下一个流,但是,当添加pipe(process.stdout)甚至是through2双工流时,我得到这个最大的调用堆栈达到了错误。任何想法?

1 个答案:

答案 0 :(得分:1)

我认为你应该这样写:

var myCsvStream = fs.createReadStream('csv_files/myCSVFile.csv');
var csv = require('fast-csv');

var csvStream = csv
  .parse({headers: true, objectMode: true, trim: true})
  .on('data', function (data) {
    myData.push(data);
  })
  .on('end', function () {
    console.log('done parsing counties')
  });

myCsvStream
.pipe(csvStream)
.pipe(process.stdout);

之后你可以将它全部包装在一个函数中。