版本

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@2eslint-plugin-b@3,并且您扩展了依赖于 eslint-plugin-a@1eslint-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 字段,以强制指定插件包的特定版本。
    • 请注意,如果插件包在版本之间有重大更改,这可能会导致 linting 出现错误。

资源

更多信息,请参阅

  • 配置插件,以获取有关如何从插件扩展的文档
  • 创建插件,以获取有关如何定义插件的文档
更改语言