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 在安装后/解锁时挂起的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机解锁时弹出来的缓冲界面可否改

Android - 在成就解锁时播放声音

在Windows XP上系统锁定/解锁时触发事件

使用 Kotlin 解锁设备时如何启动活动?

为啥我没设置任何锁屏,PIN码,安卓就显示手机已加密了

std::mutex 如何在不同的线程中解锁?