ESLint 无法唯一确定插件 …
症状
使用 旧版 ESLint 配置系统 时,您可能会在安装依赖项后运行 ESLint 时看到此错误
ESLint couldn't determine the plugin "${pluginId}" uniquely.
- ${filePath} (loaded in "${importerName}")
- ${filePath} (loaded in "${importerName}")
...
Please remove the "plugins" setting from either config or remove either plugin installation.
原因
ESLint 配置文件允许加载可能包含其他插件的插件。插件包可以作为您的包和一个或多个 ESLint 插件的依赖项指定。旧版 ESLint 配置文件可以使用 extends
来包含其他配置。这些配置可能依赖于插件在配置中提供某些功能。
例如,如果您的配置依赖于 eslint-plugin-a@2
和 eslint-plugin-b@3
,并且您扩展了依赖于 eslint-plugin-a@1
的 eslint-config-b
,那么 eslint-plugin-a
包可能在磁盘上有两个不同的版本
node_modules/eslint-plugin-a
node_modules/eslint-plugin-b/node_modules/eslint-plugin-a
如果旧版 ESLint 配置系统看到两个插件在多个位置存在,并且版本不同,它将不知道该使用哪个。
请注意,此问题仅存在于旧版 eslintrc 配置中。新的 “扁平化”配置系统 让您自己 import
依赖项,无需 ESLint 尝试唯一确定它们的版本。
解决方案
此问题的常见解决方案包括
- 将所有软件包的所有版本升级到最新版本
- 运行
npm dedupe
或等效的包管理器命令来对软件包进行重复数据删除,如果它们的版本范围兼容 - 使用
overrides
或等效的包管理器package.json
字段强制使用插件包的特定版本- 请注意,如果插件包在版本之间存在重大更改,这可能会导致代码风格检查错误
资源
有关更多信息,请参见