版本

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 出現錯誤

資源

如需更多資訊,請參閱

變更語言