版本

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 欄位,以強制使用特定版本的插件套件。
    • 請注意,如果插件套件在版本之間有重大變更,這可能會導致在程式碼檢查中出現錯誤。

資源

如需更多資訊,請參閱

  • 設定插件以取得有關如何從插件擴展的說明文件
  • 建立插件以取得有關如何定義插件的說明文件
變更語言