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')之类的侦听器时,您不能通过管道运行流吗
?