node.js - node.js readline:“TypeError:rl 不可迭代”
问题描述
当我尝试运行我的代码时,出现此错误:
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:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\connection.js:777:13)
at Object.onceWrapper (node:events:514:26)
at Connection.emit (node:events:394:28)
at ClientHandshake.<anonymous> (C:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\connection.js:121:14)
at ClientHandshake.emit (node:events:394:28)
at ClientHandshake.execute (C:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\commands\command.js:44:10)
at Connection.handlePacket (C:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\connection.js:456:32)
at PacketParser.onPacket (C:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\connection.js:85:12)
at PacketParser.executeStart (C:\Users\rb03\Documents\Testing\node_modules\mysql2\lib\packet_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();
});
有人知道该怎么做吗?谷歌没有显示“rl is not iterable”,仅显示“rl is not async iterable”
提前致谢!
解决方案
要进行迭代,它需要:
for await (const line of rl)
这需要在一个async
函数中。你错过了await
.
rl
有一个asyncIterator
,但不是常规迭代器,因此您需要 使await
迭代工作。
如果不想迭代,可以使用常规事件并监听line
事件。
rl.on('line', line => {
// process line here
});
推荐阅读
- containerd - 如何使用 firecracker-containerd 对运行中的 firecracker vm 容器进行快照和还原?
- vim - 为什么:重绘!在augroup中不生效?
- json - 如何将已从json中提取的变量键和值存储到Azure管道中另一个具有相同格式的变量中?
- symfony - Prestashop 愿望清单模块无法安装和配置
- algorithm - 编辑多个文件
- javascript - 决定使用受控或不受控制的输入元素并删除这些道具之一
- spring-boot - 如何在 Spring Boot 配置中正确覆盖 Kafka 消费者属性?
- android - Android Studio 在创建新的 kotlin 应用程序时出现问题
- javascript - 如何从 Google Applicatioin Script 中的 HTML 文本中获取变量的值?
- python - 为什么我的框架在 tkinter 中没有完全拉伸