Cli: [PREGUNTA] ¿Hay alguna forma de definir el tiempo de espera para "npm install"?

Creado en 14 abr. 2020  ·  11Comentarios  ·  Fuente: npm/cli

Qué? Por qué

Por ahora, tenemos un problema con el paquete, cuyo archivo de metainformación (donde se enumeran todas las versiones) pesa más de 110Mb y se tarda 2.5 minutos en descargar el archivo en mi máquina, para nuestro equipo causa un molesto error en la instalación de npm debido a

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

Dónde

Por ahora, en el entorno local, tuve que ajustar los archivos npm para cambiar el tiempo de espera predeterminado.
En el registro de depuración de NPM encontré que el mensaje Response timeout... proviene de
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
Esta fuente: https://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189

Lo codifiqué de tal manera:

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

OMS

n / A

Referencias

n / A

Entonces la pregunta es:

¿Hay algún parámetro / ENV_VARIABLE, que se pueda pasar o definir antes del comando npm install , que anulará el this.timeout en el código que comparto?

Bug Needs Discussion Question Release 6.x patch

Comentario más útil

Entonces, la solución actual es actualizar a NPM 6.14.5 .

Sería perfecto cuando las últimas versiones de Node.js (10.x, 12.x, 13.x, 14.x) se envíen con 6.14.5 lugar de 6.14.4 :
https://nodejs.org/en/download/releases/

Todos 11 comentarios

También vale la pena mencionar:
no se pudo encontrar en el código de @npm/cli o node-fetch-npm nada sobre 30000 que es como el "tiempo de espera predeterminado" pasado a node-fetch-npm alguna manera

Parece que se usa en make-fetch-happen, que se usa en npm-registry-fetch y pacote. Nos encontramos con un problema en el que los metadatos se han vuelto lo suficientemente grandes como para llevarnos más de 30 segundos en algunos entornos.

Todavía no parece haber una forma de configurar la opción mágica timeout - https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56 - L58

Lo mismo aquí lo publico en ionic cli github
https://github.com/ionic-team/ionic-cli/issues/4387

degradar a 6.13.x lo resolvió para mí: https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

@darcyclarke por ahora, tenemos más problemas debido a eso, porque la última versión de Node.js v12.16.2 se envió con NPM v6.14.x por defecto.

Parece que la actualización de npm-registry-fetch en NPM v6.14.0 causó nuestro problema con un tiempo de espera como @darrinholst mencionó anteriormente:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

Sin la capacidad de redefinir el tiempo de espera para ese npm-registry-fetch en NPM v6.14.x, tuvimos que arreglar la versión de Node.js a 12.16.1 ya que es la última versión con NPM v6.13.x.

Y parece que es un error, porque antes de que eso cambie https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12, los grandes meta-archivos no eran un problema en todos los metaarchivos.

@ sidoruk-sv agradece que nos haya informado de esto. Voy a retirar esto internamente y ver si podemos enviar un parche para resolverlo y / o buscar / introducir una bandera.

No podemos implementar nuestro proyecto, la mayoría de las veces el archivo meta del paquete web se agota, a veces firebase. Empeoró las últimas semanas, parece que el metaarchivo ahora llegó a un punto en el que está fallando constantemente. Intentaremos cambiar a 6.13.7.

Editar: después de degradar, obtuvimos la primera construcción verde después de más de 10 fallas, parece prometedor.

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

Muevamos el tiempo de espera predeterminado a cero para nrf v4 (npm v6), aumentemos hasta 5 m en el último (npm v7) y agreguemos una opción --fetch-timeout en la CLI v7 para configurar esto explícitamente.

Creo que eso resolvería el problema inmediato y nos colocaría en una mejor posición en el futuro.

Entonces, la solución actual es actualizar a NPM 6.14.5 .

Sería perfecto cuando las últimas versiones de Node.js (10.x, 12.x, 13.x, 14.x) se envíen con 6.14.5 lugar de 6.14.4 :
https://nodejs.org/en/download/releases/

la documentación de configuración de npm tiene varias entradas para tiempos de espera. ¿Este código ignora esas configuraciones o no hay ninguna configuración para este caso específico y ese es el problema?

¿No hay ninguna configuración para este caso específico y ese es el problema?

sí, la opción debería venir en v7

¿Fue útil esta página
0 / 5 - 0 calificaciones