На данный момент у нас есть проблема с пакетом, файл метаинформации (где перечислены все версии) весит более 110 МБ, и для загрузки файла на мою машину требуется 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://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189
Я жестко запрограммировал это таким образом:
// 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
Кажется, используется в make-fetch-случиться, который используется в npm-registry-fetch и pacote. Мы сталкиваемся с проблемой, из-за которой метаданные стали достаточно большими, чтобы в некоторых средах нам потребовалось более 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-registry-fetch
в NPM v6.14.0 вызвало нашу проблему с тайм-аутом, как упоминал ранее @darrinholst :
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16
Без возможности переопределить тайм-аут для этого npm-registry-fetch
в NPM v6.14.x, нам пришлось исправить версию 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), увеличим его до 5 м в последнем (npm v7) и добавим опцию --fetch-timeout
в CLI 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/
в документации по конфигурации npm есть несколько записей для тайм-аутов. Этот код игнорирует эти настройки, или нет настройки для этого конкретного случая, и в этом проблема?
нет ли настройки для этого конкретного случая, и в этом проблема?
Самый полезный комментарий
Итак, текущее исправление - перейти на 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/