npm安裝依賴報錯ERESOLVE?unable?to?resolve?dependency?tree的解決方法
前言
現(xiàn)代前端項目開發(fā)中依賴管理已經(jīng)是不可或缺的一環(huán),然后由于各種問題,如歷史原因、項目缺少維護等,前端項目在依賴管理中會遇到非常多的問題。本篇文章討論其中一種,當(dāng) npm install
時遇到報錯 ERESOLVE unable to resolve dependency tree
的問題原因以及如何解決。
報錯信息
在一個安裝了 react@18.2.0
的項目中安裝依賴 ali-react-table
,就會出現(xiàn)以下錯誤。仔細閱讀錯誤原因可以得知,ali-react-table
中使用 peerDependencies
定義了依賴于react@"^16.8.0 || ^17.0.1"
項目,和我們項目中的 React
版本號沖突了。雖然這里是因為 ali-react-table
已經(jīng)疏于維護并沒有更新依賴版本信息,但是我們對第三方依賴的可控性是比較低的,除了等待第三方依賴更新或者提 PR
等待合并之后發(fā)版,我們還有一些其他方法可以暫時解決這個問題。
npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vite-project@0.0.0 npm ERR! Found: react@18.2.0 npm ERR! node_modules/react npm ERR! react@"^18.2.0" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer react@"^16.8.0 || ^17.0.1" from ali-react-table@2.6.1 npm ERR! node_modules/ali-react-table npm ERR! ali-react-table@"*" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
方案一:降級
依賴規(guī)則校驗是在 npm@7
之后引入的,我們可以降級 Node.js
或者 npm
來繞過校驗就不會報錯了。
nvm use 14.17.4 ## or npm i -g npm@6
方案二:-f 或者 --legacy-peer-deps
其實我們知道 ali-react-table
時由于疏于維護,所以沒有及時更新依賴版本信息。實際測試和我們項目里的 react@18.2.0
是可以運行沒有問題的,那么我們就可以安裝的時候帶上 --force
參數(shù)(簡寫 -f
)告訴 npm
強制安裝。
npm install -f
另一個參數(shù)是 --legacy-peer-deps
, 可以不用降級 npm
也讓 npm install
的行為和舊版本一樣,參考文檔。不過這個參數(shù)實際使用效果可能依據(jù)項目存異,需要自行測試。
npm install --legacy-peer-deps
方案三:yarn 的 resolutions 或者 npm 的 overrides
實際項目中可能不僅僅存在一個以上類似 ali-react-table
依賴版本和項目所需要的依賴版本不一致的問題,可能會有好多依賴都會有該問題,有時候我們知道項目的依賴版本關(guān)系,可以使用 resolutions
(只有使用 yarn
才能使用,參考文檔) 或者 overrides
(只有 npm@8
以上才能使用,參考文檔 ) 來指定、覆蓋第三方包指定的依賴版本。這個參數(shù)在其他一些場景也非常有效,比如所需要的第三方依賴缺少維護了、指定的版本是有問題的版本等。
{"name": "project","version": "1.0.0","dependencies": {},"resolutions": {"react": "^18.2.0"} }
{"overrides": {"react": "^18.2.0"}}
總結(jié)
依賴管理現(xiàn)在已是前端開發(fā)中重要的一環(huán),除了及時關(guān)注第三方依賴版本更新、大版本更新引起 Breaking Change
與自身項目是否兼容以外,也要針對自身項目選擇合適的第三方依賴,及時更新依賴版本,避免出現(xiàn)依賴版本問題影響項目開發(fā)和項目運行。遇到錯誤時要看清錯誤說明找出根本錯誤原因,對癥下藥找出適合的解決方法。
到此這篇關(guān)于npm安裝依賴報錯ERESOLVE unable to resolve dependency tree的解決方法的文章就介紹到這了,更多相關(guān)npm安裝依賴報錯ERESOLVE內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js 8 中的 util.promisify的詳解
本篇文章主要介紹了Node.js 8 中的 util.promisify的詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù)
這篇文章主要介紹了詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據(jù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11使用 Node.js 實現(xiàn)圖片的動態(tài)裁切及算法實例代碼詳解
這篇文章主要介紹了使用 Node.js 實現(xiàn)圖片的動態(tài)裁切功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09nodejs?express路由匹配控制及Router模塊化使用詳解
這篇文章主要為大家介紹了nodejs?express路由匹配控制及Router模塊化使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10