【问题标题】:npm hangs on postinstall / unlocknpm 在安装后/解锁时挂起
【发布时间】: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 连接更稳定(最好的有线)。

标签: linux node.js npm virtualization


【解决方案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 显示)。至少有两种升级方式:

  1. 运行sudo npm install -g npm 命令。如果要安装特定版本,可以在命令末尾附加它:sudo npm install -g npm@2.1.3
  2. 或者您可以使用 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

              • 现在包可以在命令行下正常工作

              【讨论】:

              • 也许你可以试着把它格式化一下,并添加一些关于你提到的过程的更深入的细节?
              猜你喜欢
              • 2018-02-28
              • 2013-05-28
              • 1970-01-01
              • 1970-01-01
              • 2015-05-03
              • 1970-01-01
              • 2017-04-13
              • 2019-02-21
              • 1970-01-01
              相关资源
              最近更新 更多