[英]How can I listen to an event inside a custom Readable stream in NodeJS?
這是我的代碼:
class Counter extends Readable {
constructor() {
super();
}
_read () {
readStream.on('data', (data) => {
console.log(JSON.stringify(data));
this.push(JSON.stringify(data));
});
readStream.on('end', () => {
this.push(null);
});
}
}
我收到此錯誤,並且處理也變得非常緩慢。
(node:18488) MaxListenersExceededWarning: Possible EventEmitter memory
leak detected. 11 end listeners added. Use emitter.setMaxListeners()
to increase limit (node:18488) MaxListenersExceededWarning: Possible
EventEmitter memory leak detected. 11 data listeners added. Use
emitter.setMaxListeners() to increase limit
這是我的完整代碼。 基本上,我想閱讀CSV。 將其轉換為JSON並寫入文件。 我想使用流來執行此操作。 我正在使用'csv-parser'npm模塊
const fs = require('fs');
var Readable = require('stream').Readable;
const csv = require('csv-parser');
class Counter extends Readable {
constructor() {
super();
}
_read () {
readStream.on('data', (data) => {
console.log(JSON.stringify(data));
this.push(JSON.stringify(data));
});
readStream.on('end', () => {
this.push(null);
});
}
}
let writeStream = fs.createWriteStream('tmp1');
let readStream = fs.createReadStream('tmp.csv').pipe(csv());
var counter = new Counter();
counter.pipe(writeStream);
我嘗試將1.48GB的csv文件作為json數組寫入該文件,它沒有給出您提到的任何錯誤或警告。
const http = require('http');
const fs = require('fs');
const csv = require('csv-parser');
const server = http.createServer();
const writeStr = fs.createWriteStream('data.json', { flags: 'a' });
writeStr.write('[\n');
let sep = "";
server.on('request', (req, res) => {
console.log(req.method);
fs.createReadStream('./Crimes_-_2001_to_present.csv').pipe(csv())
.on('data', function (data) {
writeStr.write(sep + JSON.stringify(data));
if (!sep)
sep = ",\n";
})
.on('end', function () {
writeStr.write('\n]')
console.log('DONE WRITING FILE');
res.end();
})
.on('error', function (err) {
consol.log(err);
})
})
server.listen(8000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.