You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用readline.createInterface循环读行?解决TS2504报错

解决TypeScript中readline Interface的async iterator报错(TS2504)

问题根源

TypeScript对Node.js readline.Interface的类型定义,在旧版@types/node包中未包含Symbol.asyncIterator的声明,导致for await...of语法无法识别其为异步迭代器,触发TS2504错误。

解决方案

1. 升级@types/node(推荐)

较新的@types/node已经补全了该类型声明,直接更新到最新稳定版即可:

npm install @types/node@latest -D

或使用yarn:

yarn add @types/node@latest -D

2. 手动补充类型声明(临时方案)

如果无法升级类型包,在项目中新增一个类型声明文件(例如src/types/readline.d.ts),添加以下内容:

declare module 'readline' {
  export interface Interface {
    [Symbol.asyncIterator](): AsyncIterableIterator<string>;
  }
}

确保该文件被tsconfig.json的include字段覆盖。

修复后的示例代码

const fs = require('fs');
const readline = require('readline');

const fileStream = fs.createReadStream('test.text');

const rl = readline.createInterface({
  input: fileStream,
  crlfDelay: Infinity,
});

// 此时for await...of可正常运行
for await (const line of rl) {
  // 处理每一行逻辑
  console.log(line);
}

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:45:33