npm 在安装后/解锁时挂起
Posted
技术标签:
【中文标题】npm 在安装后/解锁时挂起【英文标题】:npm hangs on postinstall / unlock 【发布时间】:2015-05-13 05:17:48 【问题描述】:我有一个使用 KVM 运行一些虚拟机的 Linux 服务器。主机是内核 2.6.32-32(-pve) 的 Debian 衍生版本。
在我运行 npm install
的大约 75% 的时间里,它在安装模块时挂起。我在愚蠢的调试级别运行它,它总是挂在行
npm info postinstall [module name]
(旧的 npm 版本)
或
npm verb unlock done using [...]
(较新的 npm 版本)
永远。
它发生在主机上的每个项目和虚拟化系统上,适用于我测试过的每个节点和每个 npm 版本(很多,包括最新的 (2.7.x atm))。
它也不是确定性的。有时它有效,有时无效,而且大多数时候它挂在不同的模块上。
在我的开发机器(在同一个网络中,运行 OS X 10.10)上运行良好。
我不支持任何类型的代理。
这里可能有什么问题?
编辑:目前我通过使用https://github.com/JamieMason/shrinkpack将所有依赖项签入为gzip文件来解决这个问题
【问题讨论】:
你知道它挂在什么特定包的安装后吗?还有什么是节点版本? ~/.npmrc 的输出是什么?您是否尝试过在运行 npm install 之前使用npm cache clean
删除锁定文件?
它所挂的包不同。我尝试了很多 node 和 npm 版本,以及做一个npm cache clean
。我要检查 ~/.npmrc 输出。
只想补充一点,总的来说,我发现连接越稳定,npm install
越稳定,不会卡住,我尝试了多个版本的npm
,没有任何帮助使我的 Internet/Intranet 连接更稳定(最好的有线)。
【参考方案1】:
我几个小时都遇到同样的问题,但无法找出问题所在。我尝试重新安装所有东西几次,手动安装单个模块,从 x64 切换到 x86 版本的 NodeJS 等,但无济于事。
最后,我更改了网络,从基于 ADSL2+ 的 WiFi [~2mbps] 到 4G 热点 [~20mbps],它在 30 秒内运行。不知道为什么,因为它看起来不像是网络速度问题,但它解决了问题。
希望这对其他人也有帮助!
【讨论】:
我可以确认。从 wifi 更改为 lan 工作。谢谢! :)【参考方案2】:我在基于 Ubuntu 的 Jenkins slave 上遇到了同样的问题,通过升级 npm
解决了。
apt-get
安装的默认npm
现在有版本1.3.10
,它非常旧(npm --version
显示)。至少有两种升级方式:
-
运行
sudo npm install -g npm
命令。如果要安装特定版本,可以在命令末尾附加它:sudo npm install -g npm@2.1.3
。
或者您可以使用 these instructions 添加 NodeSource 存储库,然后正常运行 sudo apt-get update
。
【讨论】:
很抱歉,我已经尝试了很多 npm 版本(包括最新版本 (2.7.x)),但都没有成功...npm install npm
感觉很奇怪,但它确实有效...可能从那时起就使用 npm。【参考方案3】:
我在Windows
上遇到了同样的问题。我删除了我的npm-cache
文件夹并重新安装了npm
。之后一切都开始正常工作。
npm-cache
文件夹位于
<your-drive>\Users\<your-name>\AppData\Roaming\npm-cache
记得开启'查看隐藏文件,因为AppData文件夹默认是隐藏的
你可以使用命令重新安装npm,
npm i npm -g
【讨论】:
重新安装 npm 对我有用,谢谢!【参考方案4】:在 Windows 上,请确保您在本机 CMD 中(而不是在 VSCODE 或任何 IDE 中)。另外,尝试增加节点的最大内存限制:
set NODE_OPTIONS=--max_old_space_size=8096
【讨论】:
【参考方案5】:我也做了同样的事情,将我的网络从 WiFi 切换到 3G,它工作正常。
【讨论】:
【参考方案6】:我遇到了同样的问题,这是 Github 上的问题: https://github.com/npm/npm/issues/7862
有一些有用的提示似乎对少数人有所帮助。
对我来说 $ npm install -g node-gyp(这里建议:http://gangmax.me/blog/2013/05/13/resolve-npm-update-node-gyp-hung-problem/)解决了这个问题。
【讨论】:
【参考方案7】:我有同样的问题,只是运行
npm cache clean
而且它有效!
【讨论】:
【参考方案8】:在 Windows 中遇到了同样的问题。解决方法是安装node和npm后重启,然后以管理员身份运行命令提示符。
【讨论】:
【参考方案9】:就我而言,系统重启完成了这项工作。
我运行了npm install --verbose
,它建议锁定npm-cache
中的文件。而且我认为系统在系统重新启动后释放了文件(正在使用中)。我正在使用 Windows。
【讨论】:
【参考方案10】:尝试再次克隆项目,然后运行 npm install
以在终端中安装软件包。
【讨论】:
npm 缓存清理 --force。这个你也可以试试【参考方案11】:=> 当安装包中的 npm 块用于 IONIC 安装和 ReactNative 以及另一个包 npm 时,此方法适用于我。
您可以临时更改: npm config 设置前缀 C:\Users[用户名]\AppData\Roaming\npm\node_modules2
更改环境变量集中的路径 C:\Users[username]\AppData\Roaming\npm\node_modules2
运行你的命令来安装你的包。
打开文件资源管理器复制链接 C:\Users[username]\AppData\Roaming\npm\node_modules
ok 文件 yourpackage.CMD 创建了另一个文件夹 在 node_modules 中创建了“node_modules2”并包含您的包文件夹。
将你的包文件 CMD 复制到父文件夹“npm”
将你的包文件夹复制到父文件夹“node_modules”
现在运行 npm config set prefix C:\Users[username]\AppData\Roaming\npm
更改环境变量集中的路径 C:\Users[username]\AppData\Roaming\npm
现在包可以在命令行下正常工作
【讨论】:
也许你可以试着把它格式化一下,并添加一些关于你提到的过程的更深入的细节?以上是关于npm 在安装后/解锁时挂起的主要内容,如果未能解决你的问题,请参考以下文章