Cli: [ВОПРОС] Есть ли способ определить тайм-аут для `npm install`

Созданный на 14 апр. 2020  ·  11Комментарии  ·  Источник: npm/cli

Что почему

На данный момент у нас есть проблема с пакетом, файл метаинформации (где перечислены все версии) весит более 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
    }

ВОЗ

н / д

Рекомендации

н / д

Итак, вопрос:

Есть ли какой-то параметр / 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/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 есть несколько записей для тайм-аутов. Этот код игнорирует эти настройки, или нет настройки для этого конкретного случая, и в этом проблема?

нет ли настройки для этого конкретного случая, и в этом проблема?

да, опция должна появиться в версии 7

Была ли эта страница полезной?
0 / 5 - 0 рейтинги