Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此节点csv解析器事件侦听器从未启动?_Javascript_Node.js_Csv - Fatal编程技术网

Javascript 为什么此节点csv解析器事件侦听器从未启动?

Javascript 为什么此节点csv解析器事件侦听器从未启动?,javascript,node.js,csv,Javascript,Node.js,Csv,我想逐行读取一个大型csv文件,将选项卡分隔的值解析为一个javascript对象,然后使用该对象进行处理。这是一般的工作流程 我可以读取原始文件,但由于某种原因,node csv parser的readable事件从未触发。我看到很多string==…日志消息,但没有解析器可读的消息 import csv from 'csv'; import byline from 'byline'; import {createReadStream} from 'fs'; var readStreamBy

我想逐行读取一个大型csv文件,将选项卡分隔的值解析为一个javascript对象,然后使用该对象进行处理。这是一般的工作流程

我可以读取原始文件,但由于某种原因,
node csv parser
readable
事件从未触发。我看到很多
string==…
日志消息,但没有
解析器可读的
消息

import csv from 'csv';
import byline from 'byline';
import {createReadStream} from 'fs';

var readStreamByLine = byline(createReadStream(file));
readStreamByLine.on('data', function(chunk) {
  var string = chunk.toString();
  console.log('string == ' + string);
  var parser = csv.parse({
    delimiter: '\t'
  });

  parser.write(string);

  parser.on('readable', () => {
    console.log('parser readable');
    while (csvdata = parser.read()) {
      console.log(csvdata);
    }
  });
});

我在这里遗漏了什么?

刚刚找到了一个解决方案。我忽略了添加以下内容的最后一行:


parser.end()

您不需要署名。默认情况下,csv解析器将在流式传输时返回一行。请看下面的示例,但是如果我有一个非常大的csv文件,那么整个文件的原始内容不会存储在内存中吗?如果可行的话,我想避免这种情况。流式解析器应该将其从磁盘流式传输,这样就不应该立即将整个文件加载到内存中。csv流式解析器的内存中没有整个文件,但是
createReadStream
返回的流不会在其缓冲区中返回整个
文件,并将缓冲区存储在内存中?