[英]npm install gets stuck at fetchMetadata
從今天開始,我目前無法在任何項目中運行npm install
。 我正在運行節點 v8.2.1 和 npm 5.3.0(通過 nvm 安裝)。
當鍵入npm install
時,它每次都會卡在fetchMetadata
上: ⸨ ░░░░░░░░░░░░░░░░⸩ ⠧ fetchMetadata: sill pacote range manifest for longest@^1.0.1 fetched in 197ms
我已經嘗試切換回npm 5.0.3
,它運行完美,但仍然卡住了。
我的電腦的詳細信息:運行macOS 10.12.6
的 MacBook Pro
這是我花了半個小時后解決這個問題的方法:
npm config set registry http://registry.npmjs.org/ --global
npm cache clear --force
{}
npm install --verbose
節點:v12.14.1 npm:v6.13.4
當我嘗試在 Angular 6 應用程序上運行ng update
以將其更新為 Angular 9 時,會出現此問題。
首先,運行npm install --verbose
以查看更多信息!
我的情況發生了什么:
在你的package.json
中搜索你直接從 Github 獲得的包。 在我的情況下,這樣的包已經不存在了。 這樣的線條看起來像
"NAME_OF_PACKAGE": "git+ssh://git@github.com/SOME_USER/NAME_OF_PACKAGE.git",
刪除包,修復名稱/位置或更改為包的 npm 版本。
進一步說明:我遇到了其他幾個類似的錯誤,都一樣,但包名與longest@^1.0.1
不同。 我也有p-try@something
或array-ify@something
對我來說,所有這些都不起作用: rm -rf ~/.npm
、 npm cache clean
或rm package-lock.json
都不起作用!
添加到@CptUnlucky 的答案。
npm config set registry "http://registry.npmjs.org"
這會強制進行 http 獲取。 如果僅此一項不起作用,請限制可以建立的同時連接數。 默認最大連接數為 50。
npm set maxsockets 3
這對我有用。
這個問題已經很老了,但這些天我已經陷入了這種情況。
我嘗試了我閱讀的每一個建議來解決與 npm 安裝過程相關的問題(npm 緩存清除和驗證、卸載並重新安裝軟件包、卸載並安裝所有內容等等......)看起來像“鎖定”綜合症. 就我而言,沒有什么是成功的。
一旦我發現我的網絡完全啟動並運行,沒有任何防火牆、代理和/或奇怪的路由規則,我就開始使用(cli 示例) npm install -g @angular/cli --verbose
安裝軟件包,我發現所有與 URL registry.npmjs.org
的連接是在 https 中完成的。 這就是我的問題。
由於未知原因,在與遠程服務器連接期間,npm 在不太清楚的情況下失敗,沒有任何網絡錯誤或警告。 簡單地說,檢索數據需要大量時間。 權限? SSL證書或對其進行一些特定檢查? 網上有什么奇怪的路線?
目前只是一種猜測。 我讓計算機整夜運行,並且軟件包安裝正確,但這太瘋狂了。 不是嗎?
使用命令npm config set registry http://registry.npmjs.org/ --global
將連接切換到 http 后,安裝包過程在合理的時間內一切正常。
可能還有更多我遺漏的東西,但在我的情況下,普通的 http 已經解決了這個問題。
Ubuntu 18.04.1 LTS / 節點 v8.12.0 / npm 6.4.1 / nvm 0.33.11
我經歷過這個並用rm -rf ~/.npm
或npm cache clean
修復它。
如果這不起作用,也許安裝 Homebrew 而不是 nvm,以消除一些可能性。
在一個帶有節點 v10.16.3 的舊項目中(當 v16/v18 是當前版本時)掛斷的原因是一些潛在的請求
git ls-remote -h -t git://github.com/glayzzle/php-parser.git
自 2022 年初以來失敗,因為 Github 棄用了未經身份驗證的 git:// 協議( https://github.blog/2021-09-01-improving-git-protocol-security-github/ )。 這個請求被重試了好幾次,只出現在我偶然發現的一個 npm-log 中。
我通過添加解決了它
[url "https://"]
insteadOf = git://
到 ~/.gitconfig,由https://stackoverflow.com/a/10729634/提供。
我通過打開package-lock.json並重置所有 json 來解決這個問題。 刪除當前內容並替換為
{}
然后重新安裝軟件包。
我用這個解決了我的問題:
npm cache clear --force
然后將最大 websockets 設置為低於默認值 50
npm set maxsockets 3
我認為這意味着對我來說這個問題是一個非常緩慢的安裝而不是一個真正卡住的問題,但這可能對某些人有所幫助。
在我的情況下,刪除連接到永遠加載的包解決問題
"swagger-core-api": "apigee-127/swagger-core-api" //removing this
但類似問題的真正原因是項目沒有將完整的 git 數據推送到 github(由於 .gitconfig 中的混亂)。 然后 github 克隆副本文件與存儲庫中的一個不匹配(或下載 ZIP)。
可能不是最好的解決方案,但我的解決方法是將我的活動分支推到原點,將我的 repo 重新克隆到另一個文件夾中,然后在新文件夾中安裝 npm。
我在使用 couchdb-fauxton 進行npm install
時卡住了,我通常坐在公司防火牆后面並在任何地方使用代理,但切換到直接連接,因為使用npm config proxy
對我不起作用。 但是 npm install 使用git
,我仍然設置為使用代理,這就是我的安裝卡住的原因。 在 git 中禁用代理后,它工作了。
您可以嘗試通過將配置設置為:
npm config set registry
這個對我有用
可能的原因之一是您有一個有問題的循環依賴。
就我而言,我有兩個直接從 Github 獲取的包,它們都將另一個包作為它們的依賴項。 結果,在“獲取元數據”階段,當 npm 將此類包克隆到 npm 緩存目錄時,它們會在無限循環中觸發彼此的“git clone”。 在我有機會了解發生了什么之前,npm 緩存目錄增長到了 50Gb 左右的巨大大小。
額外的問題是很難判斷是什么包導致了問題,因為 npm 登錄不夠精確,並且 npm 安裝過程似乎卡在完全不同的包上。 在這種情況下,請檢查您的 npm 緩存目錄 (~/.npm/_cacache/tmp) 以查看重復克隆的存儲庫。
PS 我在使用 npm6 時遇到了這個問題,但似乎 npm7 對這種情況的處理方式不同,並且一切正常。
希望這將有助於某人節省時間和精力。
npm ci
確實為我解決了這個問題(今天)。 之后npm install
似乎又可以正常工作了。
我認為這可能是由很多原因造成的,但是由於 npm 沒有告訴我們,我們都必須使用猜測。 在 Windows 上,我使用 Putty 的 Plink 作為 Git SSH 客戶端。 在嘗試修復不相關的錯誤時,我清除了 Putty 已知主機注冊表。
我的一些節點模塊在 Github 上,所以當 npm 嘗試使用 git 安裝它們時,Plink 詢問我是否信任 Github.com。 出於某種原因,npm 沒有將其輸出給我。 您可以通過嘗試在任何 Github.com 存儲庫上執行任何 fetch/pull 輕松驗證這是否是您的問題,您將看到 Plink the server's host key is not cached in the registry
消息中。 只需按 y 即可信任 Github(或在 Putty GUI 中加載 Github.com),這一切都對我有用。
我真的懷疑有很多人和我有同樣的問題,但我不妨發布我的修復。
對我來說,當我更改(設置)注冊表時它起作用了。
npm set registry yourcompanydomainregistry.com
或者
轉到.npmrc
文件並在那里設置/更改注冊表。
registry=yourcompanydomainregistry.com
我也陷入了其中。 症狀:掛斷並檢查可安裝狀態。 CPU 使用率為 ~3%,內存分配有點上下 ~5Mb,沒有網絡流量,硬盤寫入/讀取(作為一個普通的包管理器試圖解決依賴關系中的沖突)
在嘗試 npm cache clear --force 等后......沒有幫助。 開始手動安裝包,經過十幾個包,是同一個包的2個不同版本,相互沖突。
解決方案是將 github 鏈接(無標記/提交鎖定)的依賴項替換為包鏈接。 在那之后,一切都很順利。
我的案例是一個特殊案例,所以清潔對我不起作用。 在我的情況下是
npm i
卡在
xmlbuilder@11.0.1 checking installable status
我意識到那是一個 por webtorrent 包。 就我而言,當我重新安裝 webtorrent-cli 時,我能夠修復這個包。
然后再次清理緩存
npm cache clean
如果您仍然沒有這樣做,也請確保設置它
npm set registry=https://registry.npmjs.org/
一個簡單的:
npm install npm -g
解決了我的問題。 當然......在嘗試了這個線程中的所有其他內容之后;)
就像托馬斯所說的那樣。 嘗試 npm 安裝 npm -g。 這對我有用。
在所有答案中,這是對我有用的那個
git config --global url."https://github".insteadOf git://github
對我來說,將timeout=240000
添加到~/.npmrc
解決了卡住的問題。
可能你正坐在一個到處使用代理的公司防火牆后面。 根據您的情況,您可以為當前項目修改本地 .npmrc,而不是影響計算機上所有 npm 命令的全局文件。
您可以使用“npm config set”形式的命令等效地設置配置屬性,例如 npm config set registry http://registry.npmjs.org/
在終端上執行以下命令:-
npm config set registry <CORPORATE_ARTIFACTORY>
npm config set https-proxy null
npm config set proxy null
我遇到了同樣的問題,在我的情況下,我克隆了一個項目,並在命令提示符中使用了以下命令來運行它:
yarn install
cd {Project_name}
npm install
nx serve
希望這會有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.