Cli: [问题]有没有一种方法可以定义`npm install`的超时时间

创建于 2020-04-14  ·  11评论  ·  资料来源: npm/cli

什么为什么

目前,我们的软件包存在问题,该元信息文件(列出了所有版本)的重量超过110Mb,并且需要2.5分钟才能将文件下载到我的计算机上,对于我们的团队来说,这会导致令人讨厌的npm安装失败

Response timeout while trying to fetch http://regsitry.url/example-meta-file (over 30000ms)

哪里

现在,在本地环境中,我必须调整npm文件,以更改默认超时。
在NPM调试日志中,我发现Response timeout...消息来自
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
这一个来源: https :

我以这种方式硬编码:

    // allow timeout on slow response body
    if (this.timeout) {
      resTimeout = setTimeout(() => {
        abort = true
        reject(new FetchError(`Response timeout while trying to fetch ${this.url} (over ${this.timeout}ms)`, 'body-timeout'))
-      }, this.timeout)
+      }, 5 * 60* 1000) // 5 minutes timeout to prevent failing on huge meta files downloading
    }

WHO

不适用

参考文献

不适用

所以问题是:

是否有一些参数/ ENV_VARIABLE,可以在npm install命令之前传递或定义,它将在我共享的代码中覆盖this.timeout值。

Bug Needs Discussion Question Release 6.x patch

最有用的评论

因此,当前的解决方案是升级到NPM 6.14.5

当最新的Node.js版本(10.x,12.x,13.x,14.x)与6.14.5而不是6.14.4一起提供时,这将是完美的:
https://nodejs.org/en/download/releases/

所有11条评论

还值得一提:
@npm/clinode-fetch-npm代码中找不到关于30000任何信息,这就像以某种方式传递给node-fetch-npm的“默认超时”

似乎要在用于npm-registry-fetch和patote的make-fetch-happen中使用。 我们遇到了一个问题,即元数据变得足够大,以致于在某些环境中我们需要30秒以上的时间。

似乎还没有办法配置神奇的timeout选项-https: //github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56- L58

同样在这里我将其发布在ionic cli github上
https://github.com/ionic-team/ionic-cli/issues/4387

降级到6.13.x为我解决了它-https : //github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

目前, @ darcyclarke会导致更多问题,因为默认情况下,最新的Node.js v12.16.2随NPM v6.14.x一起提供。

好像在NPM v6.14.0中升级npm-registry-fetch ,导致了我们前面提到的@darrinholst超时问题:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

无法在NPM v6.14.x中为npm-registry-fetch重新定义超时,我们不得不将Node.js版本固定为12.16.1,因为它是NPM v6.13.x的最新版本。

似乎这是一个错误,原因是在此之前更改https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12根本不是问题。

@ sidoruk-sv感谢您提请我们注意。 我将在内部将其取回并查看我们是否可以发布补丁来解决此问题和/或查找/引入一个标志。

我们无法部署我们的项目,大多数情况下,webpack元文件会超时,有时会触发Firebase。 最近几周情况变得更糟,似乎元文件现在已经到了一定程度,因为它一直都在失败。 我们将尝试降级到6.13.7。

编辑:降级后,我们获得了10多个失败后的第一个绿色版本,看起来很有希望。

参见https://github.com/npm/npm-registry-fetch/issues/26

让我们将nrf v4(npm v6)的默认超时值移回零,最晚将其超时提高到5m(npm v7),然后在CLI v7中添加--fetch-timeout选项以进行显式设置。

我认为这将解决当前的问题,并使我们处于一个更好的位置。

因此,当前的解决方案是升级到NPM 6.14.5

当最新的Node.js版本(10.x,12.x,13.x,14.x)与6.14.5而不是6.14.4一起提供时,这将是完美的:
https://nodejs.org/en/download/releases/

npm config文档中有几个超时条目。 这段代码是忽略这些设置,还是没有针对这种特定情况的设置,这就是问题所在?

没有针对此特定情况的设置,这就是问题所在吗?

是的,选项应该在v7中推出

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

DullReferenceException picture DullReferenceException  ·  4评论

MadhuriGurumurthy11 picture MadhuriGurumurthy11  ·  3评论

goldingdamien picture goldingdamien  ·  4评论

billop picture billop  ·  3评论

ahuglajbclajep picture ahuglajbclajep  ·  3评论