[英]Node csv-parse halting after 16 rows
我在以下設置中運行csv-parse時遇到非常奇怪的行為:csv-^ 1.1.0流轉換-^ 0.1.1節點-v4.6.0
並運行以下代碼將CSV轉換為對象數組:
var parse = require('csv').parse
var fs = require('fs')
var streamtransform = require('stream-transform')
function mapCsvRow(headers, record) {
return record.reduce((p, c, i) => {
p[headers[i]] = c //eslint-disable-line
return p
}, {})
}
function parseFile(path) {
var headers
var output = []
var parser = parse({ delimiter: ',' })
var input = fs.createReadStream(path)
var transformer = streamtransform((record) => {
if (!headers) {
headers = record
return record
}
output.push(mapCsvRow(headers, record))
return record
})
// Return a new promise to wrap the parsing stream
return new Promise((resolve, reject) => {
input
.pipe(parser)
.pipe(transformer)
.on('error', e => reject(e))
.on('finish', () => resolve(output))
})
}
module.exports = parseFile
module.exports = parseFile發生的情況是,解析器在處理大於16條記錄的文件時暫停。 沒有錯誤,沒有完成,什么都沒有。
我不知道如何調試它,發生這種情況時我無法從解析器獲得任何輸入。
看起來您有讀者流和轉換器流,但是您沒有任何作家流。 因此,轉換器流變滿並暫停讀取流。
嘗試重寫您的代碼以不使用輸出數組。 如果將結果保存在內存中,則使用流毫無意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.