Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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_Stream - Fatal编程技术网

Javascript 如何使用流解析节点中的CSV?

Javascript 如何使用流解析节点中的CSV?,javascript,node.js,csv,stream,Javascript,Node.js,Csv,Stream,我有以下解析器: function Parser(options) { options = options || {}; // options.objectMode = true; options.encoding = 'utf8'; Transform.call(this, options); this._rawHeader = []; this.header = null; } util.inherits(Parser, Transform); Parser

我有以下解析器:

function Parser(options) { options = options || {}; // options.objectMode = true; options.encoding = 'utf8'; Transform.call(this, options); this._rawHeader = []; this.header = null; } util.inherits(Parser, Transform); Parser.prototype._transform = function(data, encoding, done) { this.push(this._parseRow(data)); done(); }; // Parse a data row into an object Parser.prototype._parseRow = function(row) { var fields = row.split(";"); var obj = { code: fields[0], name: fields[1].trim() }; return obj.toString(); }; var parser = new Parser({}); // Pipe the streams process.stdin .pipe(parser) .pipe(process.stdout); 函数分析器(选项){ 选项=选项| |{}; //options.objectMode=true; options.encoding='utf8'; 转换.调用(此,选项); 这个。_rawHeader=[]; this.header=null; } 继承(解析器、转换); Parser.prototype._transform=函数(数据、编码、完成){ this.push(this._parseRow(data)); 完成(); }; //将数据行解析为对象 prototype.\u parseRow=函数(行){ 变量字段=行。拆分(“;”); var obj={code:fields[0],name:fields[1].trim()}; 返回obj.toString(); }; var parser=新的解析器({}); //疏导溪流 进程.stdin .pipe(解析器) .管道(工艺标准); 但是,我得到:

ACARIT21012;CASSA RURA has no method 'split' at Parser._parseRow (/Users/pmu/projects/b/s/lib/parser.js:38:20) at Parser._transform (/Users/pmu/projects/b/s/lib/parser.js:32:18) at Parser.Transform._read (_stream_transform.js:179:10) at Parser.Transform._write (_stream_transform.js:167:12) at doWrite (_stream_writable.js:219:10) at writeOrBuffer (_stream_writable.js:209:5) at Parser.Writable.write (_stream_writable.js:180:11) at write (_stream_readable.js:573:24) at flow (_stream_readable.js:582:7) at Socket.pipeOnReadable (_stream_readable.js:614:5) ACARIT21012;CASSA RURA没有“拆分”方法 在Parser._parseRow(/Users/pmu/projects/b/s/lib/Parser.js:38:20) 在解析器处进行转换(/Users/pmu/projects/b/s/lib/Parser.js:32:18) 在Parser.Transform.\u read(\u stream\u Transform.js:179:10) 在Parser.Transform.\u write(\u stream\u Transform.js:167:12) 在doWrite(_stream_writable.js:219:10) 在writeOrBuffer(_stream_writeable.js:209:5) 在Parser.Writable.write(_stream_Writable.js:180:11) 写入时(_stream_readable.js:573:24) 在流程中(_stream_readable.js:582:7) 在Socket.pipeOnReadable(_stream_readable.js:614:5)
我怀疑流被破坏了,但不确定如何防止这种情况发生

传递给
可读
流的数据是
缓冲区
对象,而不是
字符串
Buffer
没有
split
方法。必须手动调用数据上的
toString()
,才能将其作为
字符串进行操作

Parser.prototype._transform = function(data, encoding, done) {
  this.push(this._parseRow(data.toString()));
  done();
};