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)
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
}
n / D
n / D
Portanto, a questão é:
npm install
, que irá substituir o this.timeout
no código que eu compartilho.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
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 de6.14.4
:https://nodejs.org/en/download/releases/