2015-06-03 45 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

相關問題