节点.js读取行:"TypeError: rl is not iterable"



当我尝试运行我的代码时,我得到这个错误:

file:///C:/Users/rb03/Documents/Testing/connect.js:27
for (const line of rl) {
^
TypeError: rl is not iterable
at file:///C:/Users/rb03/Documents/Testing/connect.js:27:24
at Connection.<anonymous> (C:Usersrb03DocumentsTestingnode_modulesmysql2libconnection.js:777:13)
at Object.onceWrapper (node:events:514:26)
at Connection.emit (node:events:394:28)
at ClientHandshake.<anonymous> (C:Usersrb03DocumentsTestingnode_modulesmysql2libconnection.js:121:14)
at ClientHandshake.emit (node:events:394:28)
at ClientHandshake.execute (C:Usersrb03DocumentsTestingnode_modulesmysql2libcommandscommand.js:44:10)
at Connection.handlePacket (C:Usersrb03DocumentsTestingnode_modulesmysql2libconnection.js:456:32)
at PacketParser.onPacket (C:Usersrb03DocumentsTestingnode_modulesmysql2libconnection.js:85:12)
at PacketParser.executeStart (C:Usersrb03DocumentsTestingnode_modulesmysql2libpacket_parser.js:75:16)
我的代码如下:
connection.connect(function(err) {
if (err) throw err;
console.log('Connected!');
const rl = readline.createInterface({ input: fs.createReadStream('./Logs/Outputs/split.lines.txt') });
let total = 0;
let buff = [];
for (const line of rl) {
buff.push([line]);
total++;
if (buff.length % 2000 === 0) {
connection.query("INSERT INTO test (line, timestamp, errortype) VALUES ?");
console.log(total);
buff = [];
};
};
if (buff.length > 0) {
connection.query("INSERT INTO test (line, timestamp, errortype) VALUES ?");
console.log(total);
};
connection.end();
});

有人知道该怎么做吗?Google没有显示"rl不是可迭代的",只显示"rl不是async可迭代的">

提前感谢!

要进行迭代,需要:

for await (const line of rl)

,这需要在async函数中。您缺少await

rl有一个asyncIterator,但不是一个常规的迭代器,所以你需要await来让迭代工作。


如果你不想迭代,你可以使用常规事件并监听line事件。

rl.on('line', line => {
// process line here
});

如果您想为每一行输入执行一个代码,您可以使用line事件。

rl.on('line', (input) => {
console.log(`Received: ${input}`);
});

请参阅Readline文档

编辑:有一个asyncIterator符号可以用来迭代Readline.Interface。但是,它需要一个for await...of循环,而不是一个常规的for...of循环。

for await (const line of rl) {
console.log(`Received: ${line}`);
}

相关内容

最新更新