Nx转ESLint扁平配置后Linting失效的解决方法咨询
解决Nx转ESLint扁平配置后Lint报错问题
1. 修正扁平配置的层级结构
自动生成的eslint.config.js大概率把parserOptions放错了层级——扁平配置里要用languageOptions.parserOptions替代原有的顶层parserOptions,而且必须放在TS文件匹配的配置块里。示例配置:
export default [ // 通用基础配置 { files: ['**/*.ts', '**/*.tsx'], languageOptions: { parser: '@typescript-eslint/parser', parserOptions: { project: './tsconfig.*?.json', tsconfigRootDir: import.meta.dirname, }, }, plugins: ['@typescript-eslint', 'deprecation'], rules: { 'deprecation/deprecation': 'warn', // 其他TypeScript相关规则 }, }, ];
必须保证deprecation规则和TS解析配置在同一个块里,否则规则拿不到类型检查信息。
2. 彻底清理旧配置残留
转换工具偶尔会漏删老的.eslintrc系列文件,或者在新配置里残留overrides字段——扁平配置不支持overrides,直接删掉。同时检查项目根目录和所有子项目,把遗留的.eslintrc.json/.eslintrc.js全部删除,避免和扁平配置冲突。
3. 确认TSConfig路径正确
monorepo子项目的配置里,tsconfigRootDir必须指向子项目根目录(用import.meta.dirname就能自动获取),project字段用相对路径写'./tsconfig.json'或者通配符'./tsconfig.*?.json',别写绝对路径,否则跨设备或CI环境会出问题。
4. 更新依赖并重新转换
旧版本的Nx ESLint插件转换逻辑有bug,先升级依赖:
npm install @nx/eslint@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint-plugin-deprecation@latest
然后重新执行转换命令,带上--all一次性搞定整个monorepo:
nx g @nx/eslint:convert-to-flat-config --all
5. 用debug模式排查问题
如果还是报错,给lint命令加--debug参数,看ESLint实际加载了哪些配置、TSConfig路径有没有解析错:
nx run not-found:lint --debug
从输出里能看到具体哪块配置没生效,精准调整。
内容的提问来源于stack exchange,提问作者Jan Brell
相关产品推荐
相关产品推荐

