目前,我们的软件包存在问题,该元信息文件(列出了所有版本)的重量超过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
}
不适用
不适用
所以问题是:
npm install
命令之前传递或定义,它将在我共享的代码中覆盖this.timeout
值。还值得一提:
在@npm/cli
或node-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中推出
最有用的评论
因此,当前的解决方案是升级到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/