React+TypeScript项目ESLint报错__classPrivateFieldGet(...).at is not a function
React+TypeScript项目ESLint报错:__classPrivateFieldGet(...).at is not a function 解决指南
__classPrivateFieldGet 是什么?
__classPrivateFieldGet是Babel转译ES6+类私有字段(以#开头的属性)时生成的辅助函数,作用是安全访问类的私有成员。这个报错并非你的业务代码问题,而是ESLint解析过程中内部逻辑触发的错误。
报错核心原因
这个错误本质是Node.js版本过低或ESLint及依赖包版本不兼容导致的:
Array.prototype.at()是ES2022新增的数组方法,Node.js 16.6.0及以上才原生支持;如果你的Node.js版本低于这个阈值,ESLint内部运行时会找不到该方法。- 部分旧版本的ESLint或其依赖(如
@babel/eslint-parser)存在兼容性问题,调用at()方法时触发报错。
解决方法
1. 升级Node.js版本
将Node.js升级到16.6.0或更高版本(推荐LTS版本,如18.x),直接解决原生方法支持问题。
2. 升级ESLint及相关依赖
- 删除项目根目录下的
node_modules文件夹和package-lock.json/yarn.lock文件 - 更新
package.json中的依赖版本:eslint:升级到8.21.0及以上@typescript-eslint/eslint-plugin和@typescript-eslint/parser:保持版本一致(建议统一用5.x系列)- 若使用
@babel/eslint-parser,升级到7.18.9及以上
- 重新安装依赖:
npm install # 或 yarn install
3. 配置ESLint支持ES2022环境
在.eslintrc.js的env字段中添加es2022声明,明确告诉ESLint代码目标环境支持ES2022特性:
module.exports = { env: { browser: true, es2022: true, node: true, }, // 其他原有配置... };
4. 排查依赖冲突
运行以下命令检查是否存在多版本ESLint:
npm ls eslint # 或 yarn list eslint
如果输出显示多个ESLint版本,说明存在依赖冲突,可通过npm dedupe或手动调整依赖版本来解决。
验证修复
修改完成后,重启ESLint服务(比如在VSCode中重启ESLint插件),检查所有tsx文件的首行报错是否消失。
内容的提问来源于stack exchange,提问作者hololo
相关产品推荐
相关产品推荐

