Node.js:管道文件时出错ECONNRESET

时间:2017-05-17 15:04:15

标签: node.js stream pipe

我有这个错误,而#34;管道"节点中的文件:

events.js:160
  throw er; // Unhandled 'error' event
  ^
Error: read ECONNRESET
at exports._errnoException (util.js:1022:11)
at Pipe.onread (net.js:569:26)

这是我的代码:

var json_file = fs.createWriteStream(jsonFile),
    processes = 0,
    read_ended_flag = false,
    converter = new Converter(params);

let read_csv_file = fs.createReadStream(csvFilePath);

// For each csv line, we get a json doc
converter.on('record_parsed', jsonObj => {
    processes++;

    json_file.write(JSON.stringify(jsonObj) + '\n', () => {
        processes--;

        if(read_ended_flag && processes == 0){
            json_file.end();
            callback();
        }
    });
});

converter.on('end_parsed', () => {
    read_ended_flag = true;
});

read_csv_file
    .pipe(converter);

我尝试使用thisthis捕获错误,但仍然相同。 只有在处理小文件(> 100行)时才会出现此错误。

是否因为在写入新文件之前关闭了读取流?

非常感谢任何提示&帮助!

1 个答案:

答案 0 :(得分:1)

我找到了解决方案! :)

这是由于我的转换器参数(csvtojson模块),我将workerNum设置为4,而不是我必须放1来处理小文件。

  

workerNum:工作进程数。工作进程将使用多核来帮助处理CSV数据。设置为Core的数量,以提高处理大型csv文件的性能。为小csv文件保留1。默认值为1。

Here是一个关于csvtojson模块的完整教程

希望它能帮助别人!