Cli: [PERGUNTA] Existe uma maneira de definir o tempo limite para `npm install`

Criado em 14 abr. 2020  ·  11Comentários  ·  Fonte: npm/cli

O que? Por que

Por enquanto, temos um problema com o pacote, cujo arquivo meta info (onde todas as versões estão listadas) pesa mais de 110 MB e leva 2,5 minutos para baixar o arquivo na minha máquina, para nossa equipe isso causa uma falha irritante de instalação do npm por causa de

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

Onde

Por enquanto, no ambiente local, tive que ajustar os arquivos npm, para alterar o tempo limite padrão.
No registro de depuração do NPM, descobri que a mensagem Response timeout... vem de
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
Este é uma fonte: https://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189

Codifiquei isso de forma:

    // 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
    }

Quem

n / D

Referências

n / D

Portanto, a questão é:

Existe algum parâmetro / ENV_VARIABLE, que pode ser passado ou definido antes do comando npm install , que irá substituir o this.timeout no código que eu compartilho.

Bug Needs Discussion Question Release 6.x patch

Comentários muito úteis

Portanto, a correção atual é atualizar para NPM 6.14.5 .

Seria perfeito quando as versões mais recentes do Node.js (10.x, 12.x, 13.x, 14.x) fossem enviadas com 6.14.5 vez de 6.14.4 :
https://nodejs.org/en/download/releases/

Todos 11 comentários

Também vale a pena mencionar:
não foi possível encontrar no código de @npm/cli ou node-fetch-npm algo sobre 30000 que é como o "tempo limite padrão" passado para node-fetch-npm alguma forma

Parece ser usado em make-fetch-acontecer que é usado em npm-registry-fetch e pacote. Estamos enfrentando um problema em que os metadados se tornaram grandes o suficiente para nos levar mais de 30 segundos em alguns ambientes.

Ainda não parece haver uma maneira de configurar a opção mágica timeout - https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56 - L58

O mesmo aqui eu postei no cli github iônico
https://github.com/ionic-team/ionic-cli/issues/4387

o downgrade para 6.13.x resolveu para mim - https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

@darcyclarke por enquanto, temos mais problemas por causa disso, porque o Node.js v12.16.2 mais recente foi enviado com o NPM v6.14.x por padrão.

Parece que a atualização de npm-registry-fetch no NPM v6.14.0 causou nosso problema com um tempo limite como @darrinholst mencionado anteriormente:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

Sem a capacidade de redefinir o tempo limite para aquele npm-registry-fetch no NPM v6.14.x, tivemos que fixar a versão do Node.js para 12.16.1, pois é a última versão com o NPM v6.13.x.

E parece que é um bug, porque antes disso muda https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12, problema enorme em todos os meta-arquivos.

@sidoruk-sv agradecemos por nos alertar sobre isso. Vou levar isso de volta internamente e ver se podemos enviar um patch para resolver isso e / ou encontrar / introduzir um sinalizador.

Não podemos implantar nosso projeto; na maioria das vezes, o metarquivo webpack atinge o tempo limite, às vezes firebase. Piorou nas últimas semanas, parece que o metarquivo atingiu um ponto em que falha consistentemente. Tentaremos fazer o downgrade para 6.13.7.

Editar: após o downgrade, obtivemos a primeira construção verde após mais de 10 falhas, parece promissor.

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

Vamos mover o tempo limite padrão de volta para zero para nrf v4 (npm v6), aumentá-lo para 5m no último (npm v7) e adicionar uma opção --fetch-timeout no CLI v7 para definir isso explicitamente.

Acho que isso resolveria o problema imediato e nos colocaria em uma posição melhor no futuro.

Portanto, a correção atual é atualizar para NPM 6.14.5 .

Seria perfeito quando as versões mais recentes do Node.js (10.x, 12.x, 13.x, 14.x) fossem enviadas com 6.14.5 vez de 6.14.4 :
https://nodejs.org/en/download/releases/

a documentação de configuração do npm tem várias entradas para tempos limite. Este código está ignorando essas configurações ou não há nenhuma configuração para este caso específico e esse é o problema?

não há configuração para este caso específico e esse é o problema?

sim, a opção deve vir na v7

Esta página foi útil?
0 / 5 - 0 avaliações