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