簡體   English   中英

16行后節點csv-parse暫停

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM