从TSLint迁移到ESLint后.eslintrc.js出现parserOptions.project解析错误如何解决
问题原因
- 你在ESLint配置中引入了
plugin:@typescript-eslint/recommended-requiring-type-checking规则集,该规则集依赖TS类型系统做校验,要求parserOptions.project指向对应的tsconfig文件。此时ESLint会校验所有待lint文件是否被tsconfig的包含范围覆盖。 - 你的tsconfig.json没有显式配置
include字段,TS默认只会扫描目录下的.ts、.tsx后缀文件,.eslintrc.js是JS后缀的配置文件,不在默认包含范围内,因此触发报错。 - 额外的构建警告是因为部分待lint的文件(多为JS配置类文件)没有匹配到对应的生效规则,ESLint提示该类文件的lint无实际效果。
- 另外你的ESLint配置中
parserOptions重复定义了两次project字段,属于冗余配置,虽然不直接导致报错但建议清理。
解决办法
你可以根据自身需求选择任意一种方案:
方案1:直接忽略不需要lint的配置文件(最推荐,无副作用)
在项目根目录新建.eslintignore文件,写入以下内容即可:
.eslintrc.js # 其他不需要lint的配置文件也可以加在这里,比如webpack.config.js、babel.config.js等
这类配置文件本身是Node环境运行的JS文件,不需要走TS类型校验规则,忽略后完全不影响业务代码的正常lint效果,也不会有任何不良后果。
方案2:修改tsconfig包含配置文件(适用于需要校验JS配置文件的场景)
在你的tsconfig.json中新增include字段,覆盖所有需要lint的文件路径:
{ "compilerOptions": { /* 原有配置保持不变 */ }, "include": [ "src/**/*", // 替换为你实际的业务代码目录路径 ".eslintrc.js" // 其他需要校验的JS文件也可以加在这里 ] }
同时清理ESLint配置中冗余的project定义,修改parserOptions为:
parserOptions: { project: './tsconfig.json', sourceType: 'module' },
针对构建时的规则缺失警告
如果选了方案1,直接把报警告的文件都加到.eslintignore中即可解决。
如果需要保留这类文件的lint校验,可以在ESLint配置中新增overrides字段单独匹配JS文件规则:
module.exports = { /* 原有配置保持不变 */ overrides: [ { files: ['*.js'], rules: { // 为JS文件配置适配的规则,不需要的规则可以设为off '@typescript-eslint/explicit-module-boundary-types': 'off', // 其他不兼容JS的TS规则都可以在这里关闭 } } ] }
内容的提问来源于stack exchange,提问作者Robert T
相关产品推荐
相关产品推荐

