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