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