Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点流-超出获取最大调用堆栈_Javascript_Node.js_Stream_Callstack - Fatal编程技术网

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

Javascript 节点流-超出获取最大调用堆栈,javascript,node.js,stream,callstack,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; csvSt

我似乎无法理解为什么我的流管道会出现这个错误。我想我已经穷尽了所有的路,所以我还缺少什么:这就是我所拥有的:

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
就是这样,我可以看到数据可以继续传输到下一个流,但是,当添加
管道(process.stdout)
或者甚至是通过2双工流添加
时,我得到了这个最大的调用堆栈到达错误。有什么想法吗?

我想你应该这样写:

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

之后,您可以将其全部打包到一个函数中。

您的CSV文件有多大?另外,您正在显示的代码是否与您正在使用的代码完全相同?csv文件完成了解析,因此我知道这不是大小问题,但为了提供信息,它大约有2.8MB。不,这不是确切的密码。我遗漏了一些requires和其他与issueb无关的代码,但是您发布的代码是否也出现了同样的错误(我已经运行了一个70MB的文件,很好)?否则很难猜出发生了什么。代码中没有任何潜在的递归调用,我也不认为
fast csv
是问题所在。
/Users/tpoher/projects/blah/myproj/node_modules/fast csv/lib/parser/parser_stream.js:287 emit:function(event){^RangeError:Maximum call stack size Oversed
是我遇到的错误,所以可能是“fast csv”,但我不知道如何或为什么。另外,当您运行上述代码时是否没有遇到此错误?@robertklep这似乎是
fast csv
的问题,因为我刚刚将库更改为使用
csv streamify
a这项工作
myCsvStream.pipe(解析器).pipe(process.stdout)
当使用
csv-steamify
解析器流时。现在用它们填写问题通知单我仍然会遇到同样的错误,将csvstream取出到它自己的变量中,然后按照您建议的方式调用它。当使用
on('data')之类的侦听器时,您不能通过管道运行流吗