NX工作区迁移ESLint至Flat格式后出现Lint错误
解决方案:NX 20 + Angular 19 ESLint Flat Config迁移错误修复
1. 修复错误的ESLint插件导入
迁移脚本自动生成的import eslintPluginPluginNxAngular from 'eslint-plugin-plugin:@nx/angular';完全无效,原因是:
plugin:@nx/angular是ESLint配置集,并非可直接导入的插件模块- Flat Config规范中,插件需从对应的npm包直接导入,而非带
plugin:前缀的路径
修复操作:
- 删除错误导入语句:
import eslintPluginPluginNxAngular from 'eslint-plugin-plugin:@nx/angular'; - 从
plugins对象中移除'plugin:@nx/angular': eslintPluginPluginNxAngular,这一行
若需启用@nx/angular的ESLint规则,可直接导入官方提供的Flat Config:
import { nxAngularTsConfig } from '@nx/angular/eslint';
再将其加入导出的配置数组即可。
2. 解决@ngrx/router-store缺失错误
该错误是因为@nx/angular代码尝试导入@ngrx/router-store,但你的工作区未安装此依赖。大概率是迁移脚本错误引入了含NgRx的配置,或项目中存在未清理的NgRx相关配置引用。
两种修复方案:
方案一:安装缺失的NgRx依赖
若项目确实需要NgRx,执行以下命令安装(版本与已有的@ngrx/schematics保持一致):
npm install @ngrx/router-store@19.0.1 --save # 或使用yarn/pnpm yarn add @ngrx/router-store@19.0.1 pnpm add @ngrx/router-store@19.0.1
方案二:移除不必要的NgRx配置引用
若项目不需要NgRx,检查eslint.config.mjs中compat.config()的extends字段、自定义规则,以及项目的angular.json/NX配置文件,移除所有涉及NgRx的配置项。
修复后的完整eslint.config.mjs示例
import { FlatCompat } from '@eslint/eslintrc'; import { dirname } from 'path'; import { fileURLToPath } from 'url'; import js from '@eslint/js'; import nxEslintPlugin from '@nx/eslint-plugin'; import eslintPluginCustomRules from 'eslint-plugin-custom-rules'; import { nxAngularTsConfig } from '@nx/angular/eslint'; const compat = new FlatCompat({ baseDirectory: dirname(fileURLToPath(import.meta.url)), recommendedConfig: js.configs.recommended, }); export default [ { ignores: ['**/dist'], }, { plugins: { '@nx': nxEslintPlugin, 'custom-rules': eslintPluginCustomRules, }, }, nxAngularTsConfig, { files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], rules: { '@typescript-eslint/parser': 'off', '@angular-eslint/prefer-standalone': 'off', '@nx/enforce-module-boundaries': [ 'error', { enforceBuildableLibDependency: true, allow: [], }, ], }, }, ...compat.config({ extends: ['plugin:@nx/typescript'], }) ];
验证步骤
- 执行
npm install/pnpm install确保依赖同步 - 运行
nx lint <你的项目名>确认修复生效
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

