本文記錄一次使用yarn install
時報錯 Couldn’t find package xxxx 問題的排查。
問題描述
問題來自于筆者對一個前端項目進行debug時的yarn install
報錯信息,在一個可以明確代碼沒有問題的項目中,因為切換環境,重新執行yarn install
,發現一直給出錯誤信息:
error Couldn't find package "xxxx" required by "yyyyyyy" on the "npm" registry
排查過程
遇到這個問題時第一反應是網絡有問題,導致訪問不到,遂切換網絡,并且排查了是否因為配置了yarn mirror造成,unset掉mirror配置后,問題依舊。
為了徹底進行排查,把系統中所有的http proxy全部去掉,再次install發現還是報錯。
此時只能排查錯誤提示中那個package是否真的不存在,初始化了一個空白npm項目,并且進行依賴安裝,這是根源問題出現了:
npm error code CERT_HAS_EXPIRED
npm error errno CERT_HAS_EXPIRED
npm error request to https://registry.npm.taobao.org/filesize failed, reason: certificate has expired
提示信息很明顯了,是taobao鏡像證書過期了,馬上進行切換
npm config set registry https://registry.npmmirror.com
再次進行安裝,發現可以安裝那個pakage, 由此確定,目標package是存在的,并且很有可能yarn install失敗的原因也是這個。
重新回到需要調試的項目中,再次執行yarn install,發現一切正常了.
小結
yarn install
時,應該不僅僅會用到 yarn config set registry https://registry.npmmirror.com/
這樣的配置的mirror,還可能會收到npm
所設置的mirror的影響,如果某個包安裝失敗而又可以確認目標package存在,可以把yarn
和npm
的mirror配置都排查一遍.