【问题标题】:npm install hangsnpm 安装挂起
【发布时间】:2013-05-28 06:14:30
【问题描述】:

这是我的package.json

{
"name": "my-example-app",
"version": "0.1.0",
"dependencies": {

  "request": "*",
  "nano": "3.3.x",
  "async": "~0.2"
  }
}

现在,当我打开 cmd 并运行 npm install 时,安装挂起。我做错了什么?

【问题讨论】:

  • 挂在哪里?在任何输出之前?
  • 请发布您在运行npm install时看到的输出。
  • 试试npm install --verbose,看看能不能找到什么。
  • 输出:npm WARN package.json my-example-app.1.0 No README>md file found!

标签: node.js npm


【解决方案1】:

*试试sudo npm install

*如果您使用的是 github,则可能是您没有权限,需要生成一个公共 SSH 密钥并将其添加到您的设置帐户:(https://help.github.com/articles/generating-ssh-keys/)

【讨论】:

  • 好的做法是尽可能避免使用 sudo,尤其是对于特定于项目(而非系统范围)的操作。
  • 同意,但是当您使用 LAMP 堆栈时,一个好的做法是将您的 Web 应用程序文件放在 /var/www 目录中。因此,如果您不授予这些文件夹的用户权限,则需要 sudo
【解决方案2】:

我遇到了同样的问题。原因 - 配置了错误的代理,因此 npm 无法下载包。

所以你最好的选择是查看输出

$ npm install --verbose

并找出问题所在。如果您从未配置过代理,那么可能的原因可能是

  • 非常过时的 npm 版本。
  • 您的互联网连接出现问题。
  • 权限不足,npm 无法修改文件。

【讨论】:

  • npm config set loglevel info 然后再次运行npm i
  • npm ls --global --parseable --long --loglevel info
  • 我进行了多次迭代,重新运行npm install --verbose,在挂断前显示的最新日志路径中删除了文件。终于安装到最后了。
  • 这为我解决了问题。我在 OS X 上安装 webpack,它在安装过程中挂起。我给了它时间,然后终于杀死了它。我运行了npm install --versbose(按照您的建议),然后重新运行了 webpack 安装。一切都好!
  • 使用npm 全局安装yarn 然后运行yarn install 为我解决了这个问题(还有yarn 记录“There appears to be trouble with your network connection. Retrying...”,但至少它不会挂起并持续到Done in 1035s.已记录)。
【解决方案3】:

我使用公司代理,因此我通常使用中间代理来启用 NTLM 身份验证。

我在使用 CNTLM 代理时遇到了 npm install 挂起的问题。有了 NTLM-APS(一个类似的代理),挂起就消失了。

【讨论】:

  • 谢谢,我也遇到了同样的问题,而且哪儿也不去。这是 CNTLM 第一次对我不起作用!
  • 我也切换到ntlm-aps,我看到了npm installmeteor npm install 命令的改进。
【解决方案4】:

我遇到了同样的问题。我试过了

npm config set registry http://registry.npmjs.org/

关闭 https。我也试过了

npm set progress=false 

关闭进度条(据报道会减慢下载速度)。

问题出在我的网络驱动程序上。我只需要重新启动,延迟就消失了。

【讨论】:

  • --verbose 告诉我我的在npm http fetch 200 https://registry.npmjs.org/some-project/-/some-project-X.X.X.tgz 失败时,+1 关闭 https 对我有用
  • 我不知道是 https 还是进度条,但将两者都关闭就可以了!谢谢!
  • 通过http下载代码然后运行真的是个好主意吗?代码可能已更改。
  • 关闭 https 为我解决了一切。将节点升级到最新版本后,它开始在安装时随机挂起。现在效果很好。不幸的是,切换回 http 解决了这个问题,但至少现在可以了。
【解决方案5】:

注册表(https://registry.npmjs.org/cordova) 被我们的防火墙阻止。取消阻止它解决了这个问题。

【讨论】:

    【解决方案6】:

    如果它对其他人有用,以下对我有用:

    在我的机器上,尽管 npm 代理设置正确,npm install 却一直等待执行类似 sill extract 之类的操作。重试npm install 一次又一次地等待同一个包。

    在等待很长一段时间后,npm install 打印了一条错误消息,暗示 git 正在尝试获取某些内容。

    使用以下命令配置 git 代理后问题消失:

    git config --global http.proxy https://proxy-server:port
    

    注意http.proxy中的https,否则配置不生效。代理服务器设置(http / https / 端口)可能因用户而异;因此,值得花点时间尝试 npmgit 代理服务器设置。

    【讨论】:

    • 不幸的是,有很多问题会导致这种情况。您不想要的代理设置,npm 项目有太多版本或其他一些连接问题。就我而言,我通过重新启动解决了其中一个问题。我知道这是一个愚蠢的解决方案,但如果你正在拉扯你的头发并且你还没有尝试这个,我建议你这样做。我正在运行 Mac Os Mojave,这不是我第一次遇到必须重新启动的连接问题。显然与 SSL 有关。
    【解决方案7】:

    您可以尝试删除package-lock.json,然后再运行npm install。 这对我有用。

    【讨论】:

    • 我在哪里可以找到这个包?
    • 这个文件你可以在项目的根目录中找到.. package.json的同一级别。
    • 我的npm install 每次都会卡在同一个包上(甚至在两台机器上)。我删除了package-lock.jsonnode_modules 目录(只是为了确定),最后它工作了:)
    【解决方案8】:

    当安装 IONIC 安装包和 ReactNative 以及另一个包 npm 中的 npm 阻塞时,此方法对我有用。

    您可以临时更改:

    npm config set prefix C:\Users\[username]\AppData\Roaming\npm\node_modules2

    • 更改环境变量中的路径。设置:

      C:\Users[用户名]\AppData\Roaming\npm\node_modules2

    • 运行命令来安装你的包。

    • 打开文件资源管理器,复制链接:

      C:\Users[用户名]\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[用户名]\AppData\Roaming\npm

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

    【讨论】:

      【解决方案9】:

      对于 MacOS 上的任何人(我使用的是 Mojave 10.14),以下内容帮助了我: https://github.com/reactioncommerce/reaction/issues/1938#issuecomment-284207213

      你会运行这些命令

      echo kern.maxfiles=65536 | sudo tee -a /etc/sysctl.conf
      echo kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf
      sudo sysctl -w kern.maxfiles=65536
      sudo sysctl -w kern.maxfilesperproc=65536
      ulimit -n 65536
      

      然后再试一次npm install

      【讨论】:

        【解决方案10】:

        我不确定您的问题是否是由与我的问题相同的原因引起的,但我也遇到了挂起的“npm install”并且能够修复它。

        就我而言,我想在项目中本地安装 typescript:

        npm i typescript --save-dev
        

        由于某种原因,这与我拥有的全局安装的打字稿相冲突,并且外壳只是永远挂起而不是完成或出错......

        我通过首先使用 -g 全局标志删除全局安装的打字稿来修复它:

        npm uninstall typescript -g
        

        执行此操作后,第一个命令有效! ?

        【讨论】:

          【解决方案11】:

          检查 http 和 https 的环境变量

          现有条目可能会产生一些问题。尝试删除这些条目。

          再次运行“npm install”。

          【讨论】:

            【解决方案12】:

            我只是关闭了我的 Windows 防火墙,它对我有用。 您还可以尝试不同版本的 npm。

            【讨论】:

              【解决方案13】:

              当您的 ssh 密钥受密码保护时,请运行 ssh-add。 npm 可能挂在某处询问您的密码。

              【讨论】:

                【解决方案14】:

                虽然您的里程可能会有所不同,但运行 npm cache verify 为我解决了这个问题。

                【讨论】:

                  【解决方案15】:

                  检查您的 .npmrc 文件中的 registry 条目(它标识充当包缓存的服务器。)

                  对我来说,npm install 会中途挂起,这是因为我的.npmrc 文件中列出了旧的/无响应的服务器。删除该行或将其注释掉:

                  >cat ~/.npmrc
                  #registry=http://oldserver:4873
                  

                  (和/或与您的 IT/项目负责人核实它为什么不起作用;)

                  【讨论】:

                    【解决方案16】:

                    我在 macOS 上遇到了同样的问题,经过一段时间的挣扎和搜索,this answer 实际上为我解决了这个问题:

                    npm config rm proxy
                    npm config rm https-proxy
                    npm config set registry http://registry.npmjs.org/
                    

                    【讨论】:

                    • 你应该更新它以使用 https
                    【解决方案17】:

                    安装 nvm(节点版本管理器)并将节点版本从 14 降级到 12 解决了我的问题

                    【讨论】:

                      【解决方案18】:

                      更新 npm 在 Mac OS 上帮助了我。使用命令:

                      sudo npm install -g npm@latest
                      

                      【讨论】:

                      【解决方案19】:

                      卸载和安装nodenpm 对我有用。我正在使用 Ubuntu 20.04.1 LTS

                      【讨论】:

                        【解决方案20】:

                        在我的情况下,npm install 挂起,因为它正在等待我在从 git 存储库克隆时输入我的 ssh 密钥的密码。没有提示,我意识到当我输入随机字符并且没​​有回显时可能就是这种情况。就我而言,我必须查看package.json 文件并克隆那里列出的本地存储库。然后我更新了package.json 并将这些 git 存储库的路径更改为我的本地路径。完成此操作后,其他所有内容均已安装,没有进一步的错误。

                        【讨论】:

                          【解决方案21】:

                          我在 Windows 10 上安装 electronjs 时挂起了 npm。我重新安装了它,但它仍然挂起。但我注意到它安装在同一网络中的另一个桌面上。所以最后我找到了罪魁祸首。该问题是由 Bitdefender 免费版引起的。防病毒软件没有发出警告,但它默默地阻止了它。一旦安装开始,即使控制台也没有关闭,因为它一直挂着。如果它在 Windows 上,请禁用防病毒/防火墙,并确保网络已打开,因为 npm 似乎没有适当的方式来通信网络块,并且会无限期地继续进行。

                          【讨论】:

                            【解决方案22】:

                            在充分尊重所有答案后,我切换到另一个网络,它对我有用。

                            【讨论】:

                            • 作为评论似乎更好
                            【解决方案23】:

                            在 windows 上我突然遇到了同样的问题并尝试了以上所有方法,但对我来说最终的解决方案是关闭我已激活的勒索软件保护。不知何故,它与 npm 配合得不太好

                            【讨论】:

                              【解决方案24】:

                              这很奇怪,但我想我只是不耐烦地跑了 -> npm install --verbose 并看到了进展,但它真的很慢!!!我需要的只是耐心:D

                              【讨论】:

                                【解决方案25】:

                                我遇到过几次这个问题。

                                1. 当我使用 VPN 时,我按下了 Ctrl-C 并断开了与 VPN 的连接。然后npm install 工作了。
                                2. 当我不在 VPN 上时,我按下 Ctrl-C 并连接到 VPN。然后,npm install 再次起作用。

                                【讨论】:

                                • 如果您使用的是 VPN,请断开连接。如果您不在 VPN 上,请连接。重复直到完成。 :-)
                                【解决方案26】:

                                在 MacOS 上,我能够通过以下方式解决这个问题

                                networksetup -setv6off Wi-Fi
                                

                                安装后,您可以恢复到原来的配置

                                networksetup -setv6automatic Wi-Fi
                                

                                【讨论】:

                                  【解决方案27】:

                                  我遇到此错误是因为我在 WSL2 的(docker)容器中运行 npm,而 WSL2 中的 docker 在容器中配置了错误的名称服务器,导致容器无法解析主机。

                                  要查看您的容器(甚至您的主机)是否可以解析主机,您可以尝试运行:curl https://github.com。就我而言,我收到了curl: (6) Could not resolve host: github.com

                                  如果我不使用默认网桥,则不会发生 docker 容器中的错误,而是使用自定义网桥并使用它定义容器,在这种情况下,resolv.conf 文件以正确的名称服务器结束:

                                  $ cat /etc/resolv.conf 
                                  nameserver 127.0.0.11
                                  options ndots:0
                                  

                                  ip127.0.0.11对应docker DNS服务器,解决了我的问题。

                                  如果您没有在容器中运行 npm,您的问题可能仍与某些配置错误的 resolv.conf 文件有关(如果您在 Linux 机器中,或者在带有 WSL/WSL2 的 Windows 中)。

                                  【讨论】:

                                    【解决方案28】:

                                    从之前的 npm install 中删除 node_modules 和 package-lock.json 并再次安装

                                    rm -rf node_modules package-lock.json
                                    npm install
                                    

                                    如果 npm install loader 卡住然后弹出..

                                    npm 错误!代码 UNABLE_TO_GET_ISSUER_CERT_LOCALLY

                                    npm 错误!错误号 UNABLE_TO_GET_ISSUER_CERT_LOCALLY

                                    npm 错误!对https://registry.npmjs.org/jest的请求失败,原因:无法获取本地颁发者证书”

                                    那么,

                                    npm config set strict-ssl false
                                    npm install
                                    

                                    按照卸载Node.js并正确安装

                                    https://www.geeksforgeeks.org/how-to-completely-remove-node-js-from-windows/

                                    https://coding-boot-camp.github.io/full-stack/nodejs/how-to-install-nodejs

                                    我个人遇到了这个问题,并完成了我上面列出的所有步骤。 npm config set strict-ssl false 解决了我的问题

                                    【讨论】:

                                      【解决方案29】:

                                      万一其他人遇到这种情况,我让 npm install 运行足够长的时间,然后 Jest 扩展程序崩溃(v4.2.1),此时 npm install 成功完成。

                                      Jest 配置似乎显示启用了测试自动监视功能。据我所知,我没有更改任何 Jest 设置,因此这必须是开箱即用的功能。

                                      【讨论】:

                                        【解决方案30】:

                                        npm cache clear --force 为我解决了这个问题。

                                        【讨论】:

                                          猜你喜欢
                                          • 1970-01-01
                                          • 2018-02-28
                                          • 2019-02-21
                                          • 2017-04-13
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2015-05-13
                                          • 2015-05-03
                                          相关资源
                                          最近更新 更多