从今天起,我目前无法在任何项目中运行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
,它完美无瑕,但仍然卡住了。
我计算机的详细信息:MacBook Pro正在运行macOS 10.12.6
答案 0 :(得分:11)
这是我花了半个小时后解决的方法:
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时,会发生此问题。
答案 1 :(得分:7)
首先,运行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
都无效!
答案 2 :(得分:3)
这个问题已经很老了,但这些天我陷入了这种情况。
我尝试了所有阅读的建议,以解决与npm安装过程相关的问题(npm缓存清除并验证,卸载并重新安装软件包,卸载并安装所有内容,等等...),看起来像“锁定-在“综合征。就我而言,没有任何成功。
一旦发现我的网络已完全正常运行并且没有任何防火墙,代理和/或奇怪的路由规则,我开始使用npm install -g @angular/cli --verbose
(例如cli)安装软件包,然后发现与该网络的所有连接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
答案 3 :(得分:1)
我遇到了这个问题,并使用rm -rf ~/.npm
或npm cache clean
修复了此问题。
如果这不起作用,也许安装Homebrew而不是nvm,以消除一些可能性。
答案 4 :(得分:1)
您可以尝试通过将配置设置为:
npm config set registry
对我有用
答案 5 :(得分:0)
我通过打开 package-lock.json 并重置所有json来解决此问题。删除当前内容并替换为
{}
然后重新安装软件包。
答案 6 :(得分:0)
答案 7 :(得分:0)
在我的情况下,删除与永远加载的包相关的包
"swagger-core-api": "apigee-127/swagger-core-api" //removing this
但是类似问题的真正原因是项目没有将完整的git数据推送到github(由于.gitconfig中的混乱)。然后github克隆与存储库(或下载ZIP)中的一个不匹配的副本文件。
答案 8 :(得分:0)
可能不是最好的解决方案,但是我的解决方法是将活动分支推到原始位置,将我的仓库重新克隆到另一个文件夹中,然后在新文件夹中安装npm。
答案 9 :(得分:0)
我在使用ouchdb-fauxton进行npm install
时卡住了,我通常坐在公司防火墙后面,到处都使用代理,但是切换到直接连接,因为使用npm config proxy
不能解决问题我。 但是npm安装使用git
,但我仍然设置为使用代理,这就是我的安装卡住的方式。在git中禁用代理后,它可以工作。
答案 10 :(得分:0)
添加到@CptUnlucky的答案。
npm config set registry "http://registry.npmjs.org"
这将强制进行http提取。如果仅此一项不起作用,请限制可以建立的同时连接的数量。默认的最大连接数为50。
npm set maxsockets 3
对我有用。
答案 11 :(得分:0)
可能是您坐在公司防火墙后面,该公司防火墙到处都使用代理。根据您的情况,您可以为当前项目修改本地.npmrc,而不是影响计算机上所有npm命令的全局项目。
您可以使用“ npm config set”形式的命令等效地设置配置属性,例如npm config set注册表http://registry.npmjs.org/
在终端上执行以下命令:-
npm config set registry <CORPORATE_ARTIFACTORY>
npm config set https-proxy null
npm config set proxy null
答案 12 :(得分:0)
我用这个解决了我的问题:
npm cache clear --force
然后将最大 websockets 设置为低于默认 50
npm set maxsockets 3
我认为这意味着对我来说问题是安装速度非常慢,而不是真正卡住的问题,但这可能对某些人有所帮助。