![](/img/trans.png)
[英]UNMET PEER DEPENDENCY generator-karma@>=0.9.0
[英]How do I fix the npm UNMET PEER DEPENDENCY warning?
我在 Windows 10 上,使用節點 5.6.0 和 npm 3.6.0。 我正在嘗試將 angular-material 和 mdi 安裝到我的工作文件夾中。 npm 安裝 angular-material mdi錯誤:
+-- angular@1.5.0
+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0
+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0
+-- angular-material@1.0.6
+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57
npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json'
npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed.
npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed.
npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.
如何解決此問題以安裝 AngularJS 材料和 MDI?
npm 不再安裝對等依賴項,因此您需要手動安裝它們,只需在所需的 deps 上執行npm install
,然后再次嘗試安裝主要的依賴項。
回復評論:
就在那個消息中,它說你錯過了哪個 deps
UNMET PEER DEPENDENCY angular-animate@^1.5.0 +--
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57`
所以你需要npm install angular angular-animate angular-aria angular-material angular-messages mdi
當package.json
文件中指定的一個或多個模塊的依賴項UNMET PEER DEPENDENCY
時,會拋出UNMET PEER DEPENDENCY
錯誤。 仔細檢查警告並使用正確版本的依賴項更新package.json
文件。
然后運行
rm -rf node_modules/
npm cache clean
npm install
這將正確安裝所有必需的依賴項。
就我而言,所有依賴項都已經存在。 在這種情況下,請更新NPM ,因為它可能已崩潰。 它解決了我的問題。
npm install -g npm
npm-install-peers為我工作。
npm install -g npm-install-peers
編輯 2020
從 npm v7.0.0 開始,npm 會自動安裝對等依賴項。 這是升級到 v7 的原因之一。
https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/
此頁面也很好地解釋了對等依賴的基本原理。 https://github.com/npm/rfcs/blob/latest/implemented/0025-install-peer-deps.md
此答案不適用於所有情況,但如果您無法通過簡單地輸入npm install
來解決錯誤,則此步驟可能會有所幫助。
假設您遇到此錯誤。
UNMET PEER DEPENDENCY packageA@4.2.0
npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.
這意味着您安裝了 packageA 的 4.2.0 版本,但 packageB@3.3.0 需要 pakageA 的 3.xx 版本。 ( ^的解釋)
所以你可以通過將 packageA 降級到 3.xx 來解決這個錯誤,但通常你不想降級包。
好消息是,在某些情況下,packageB 只是跟不上 packageA,而 packageB 的維護者正在努力將 packageA 的對等依賴提高到 4.xx
在這種情況下,您可以在 npm 或 github 中檢查是否有更高版本的 packageB 需要 packageA 的 4.2.0 版本。
通常,您會發現像這樣的依賴關系發生了重大變化。
packageB v4.0.0-beta.0
BREAKING CHANGE
package: requires packageA >= v4.0.0
如果在發布頁面上沒有找到任何內容,請轉到問題頁面並通過關鍵字搜索問題,例如peer
。 您可能會找到有用的信息。
此時,您有兩個選擇。
如果您選擇選項 1:
在許多情況下,該版本沒有latest
標簽,因此不穩定。 因此,您必須檢查此更新中發生的更改,並確保任何內容都不會中斷。
如果您選擇選項 2:
如果將 pakageA 從版本 3 升級到 4 是微不足道的,或者如果 pakageB 的維護者尚未測試 pakageA 的版本 4 但表示應該沒有問題,您可以考慮留下錯誤。
在這兩種情況下,最好徹底測試它是否沒有破壞任何東西。
最后,如果你想知道為什么你必須手動做這樣的事情,這個鏈接解釋得很好。
此錯誤的最可能原因之一可能是您在 package.json 中定義了舊版本。 要解決此問題,請更改 package.json 中的版本以匹配 npm 抱怨的那些。
完成后,運行 npm install 並瞧!!
給定的答案並不總是有效。 如果它不能解決您的問題。 確保您還在package.json
使用了正確的符號。 這對於解決這個頭痛非常重要。 例如:
warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".
所以我的打字稿需要在 2.4.2 和 2.6 之間,對嗎?
所以我將我的打字稿庫從使用"typescript": "^2.7"
更改為使用"typescript": "^2.5"
。 似乎正確?
錯誤的。
^
表示您可以使用"typescript": "2.5"
或"2.6"
或"2.7"
等 npm ......
如果您想了解^
和~
含義,請參閱: package.json 中的波浪號 (~) 和插入符 (^) 之間有什么區別?
您還必須確保該包存在。 也許沒有"typescript": "2.5.9"
查找包號。 為了真正安全,如果您不想閱讀它們的意思,只需刪除~
或^
。
好的,所以我掙扎了很長時間試圖弄清楚這一點。 這是核選項,因為當你用盡所有其他方式時..
完成后,它仍然有效,將您的實際代碼導入到這個新項目中。 修復較新版本的 angular 導致的任何編譯錯誤。
這就是為我所做的.. 1 小時的返工 vs 6 小時的試圖找出 wtf 是錯誤的.. 希望我以這種方式開始..
今天可用的Angular 2 rc.7 ,我在rxjs@5.0.0-beta.12
UNMET PEER DEPENDENCY 上遇到了類似的問題。
如果您像我一樣,只是將@angular/...rc.6
替換為@angular/...rc.7
- 這還不夠。 因為,例如, @angular/router
沒有rc.6
版本。
在這種情況下,最好在快速入門中查看package.json
如果您使用的是 npm v6 或更早版本,您將收到此警告。 在 npm v7.0 之后,npm 開發團隊已經聲明他們將自動安裝所有對等依賴項。 因此,現在您不想手動安裝對等依賴項。
您可以使用此命令安裝 npm v7.0,
npm install -g npm@7
從 Github 博客發布的這篇博文中了解有關 npm v7.0 的更多信息。
如果您希望保留當前版本的 angular,您可以訪問此版本兼容性檢查器來檢查哪個版本的 angular-material 最適合您當前的 angular 版本。 您還可以使用 angular-material compatible 來檢查 angular-material 的對等依賴項。
嘗試修復依賴項上的安全漏洞問題時,也會出現此問題。
這是我所做的:審核安裝的依賴項
npm audit
如果有可用的修復程序,運行以下命令將在大多數情況下解決問題:
npm audit fix
有些問題會有SEMVER WARNING ,點擊鏈接會給我們提示如何進行手動審查和/或下一步做什么。
做更多的研究讓我發現了這個命令:
npm upgrade
似乎npm audit fix
沒有考慮更新對等依賴項,並且運行npm upgrade
將修復未滿足的對等依賴項。 現在檢查我們是否通過運行解決了問題:
npm list
這將為我們提供項目的所有依賴項,並警告我們任何未滿足的 peer deps 錯誤。 在大多數情況下,升級實際上比保留您正在使用的舊版本軟件包要好,如果您沒有安全漏洞問題, npm install
也是一個可行的選擇。
我刪除了package-lock.json
和node_module
,切換到YARN
,這解決了問題
您可以通過全局安裝 UNMET 依賴項來解決。
示例: npm install -g @angular/common@4.4.6
一一安裝。 它對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.