2015-06-03 25 views
2

我似乎无法弄清楚为什么我的流管道中出现此错误。我想我已经用尽了所有的路径,所以是有什么我在想念着:这是我有:节点流 - 获取最大调用堆栈数

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双工流我得到这个最大的调用堆栈到达错误。有任何想法吗?

+0

您的CSV文件有多大?此外,您显示的代码是否正在使用您的确切代码? – robertklep

+0

csv文件完成其解析,所以我知道它不是一个大小问题,但为了信息的缘故,它的大约2.8MB。没有这个确切的代码。我遗漏了一些需求和其他与代码无关的代码 – britztopher

+0

但是,您是否发布了与您发布的代码相同的错误(我已经通过它运行了70MB文件)?否则,很难猜测发生了什么。代码中没有任何可能的递归调用,我也不认为'fast-csv'也是问题。 – robertklep

回答

0

我想你应该写这样的说法:

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

后,您可以在一个功能包了这一切。

+0

我仍然得到同样的错误采取csvstream伸到自己的变量,然后调用,像你建议的方式。在使用像on('data'...)'这样的监听器时,你不能通过管道来运行流吗? – britztopher

相关问题