【问题标题】:How to fix timeout for packages on `npm install`?如何修复“npm install”上的包超时?
【发布时间】:2018-12-28 06:17:18
【问题描述】:

当我运行npm install 时,它似乎工作正常,直到部分安装软件包。前半段好像没什么问题,但是过段时间就无法到达其他包了。我只是得到重复的错误,例如:

npm http request GET https://registry.npmjs.org/react-hot-loader
npm info attempt registry request try #3 at 6:43:34 AM
npm http request GET https://registry.npmjs.org/react-tap-event-plugin
npm info attempt registry request try #3 at 6:43:34 AM
npm http request GET https://registry.npmjs.org/react-test-renderer

等等

它将继续这样做一个小时,然后安装将失败。

每次安装都会在不同的包中中断,所以我认为这不是特定文件的问题。

我可以用我的浏览器和curl访问这些文件。

我的工作有防火墙,但此域已列入白名单。

有谁知道我可以做些什么来让它工作或者是什么导致它?

【问题讨论】:

    标签: npm npm-install


    【解决方案1】:

    如果是关于时间问题,你应该为 npm install 找到一个速度解决方案。

    所以你可以试试这些比 npm install 更快的命令:

    pnpm install %70 更快

    npm install --no-audit 快 15%

    npm install --prefer-offline --no-audit 快​​ 15%

    查看本文了解详情:speeding up npm install

    【讨论】:

      【解决方案2】:

      您可以覆盖~/.npmrc 中的最大和最小超时。

      // npm config ls -l
      // add these 2 lines in ~/.npmrc
      fetch-retry-maxtimeout = 6000000
      fetch-retry-mintimeout = 1000000
      

      【讨论】:

      • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。这样,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能获得支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
      【解决方案3】:

      如果它仍然相关或可能与其他感兴趣的人有关:对我来说它有帮助,删除 package.lock 文件并运行 npm cache clean --force

      【讨论】:

      • 这对我有帮助。事实证明,对于下载连接和下载包时被终止的连接,npm 必须设置较小的超时值。像这篇文章一样解决这个清除缓存并一一安装依赖项。
      【解决方案4】:

      这可能不是你的情况,但我在 github 上托管了一个包,其中 repo url 仅使用 git 协议(端口 9418 通常不会在防火墙上打开)。

      一旦将它添加到防火墙中,我就可以毫无问题地进行 npm 安装。

      您可以通过以下方式查看存储库 url:

      $ npm view zone.js repository.url
      git://github.com/angular/angular.git
      

      【讨论】:

        【解决方案5】:

        我通过执行这些命令解决了超时问题:

        rm package-lock.json
        npm i
        

        【讨论】:

          【解决方案6】:
          npm cache clean --force
          
          npm install --force
          

          效果很好。

          【讨论】:

          • --force on npm install 似乎无关,这是 npm help install 的引述:'npm 将拒绝安装与当前包同名的任何包。这可以用 --force 标志覆盖,但在大多数情况下可以简单地通过更改本地包名称来解决。'
          猜你喜欢
          • 1970-01-01
          • 2022-01-08
          • 1970-01-01
          • 2017-10-20
          • 2020-07-28
          • 1970-01-01
          • 1970-01-01
          • 2014-10-07
          • 1970-01-01
          相关资源
          最近更新 更多