Cli: [FRAGE] Gibt es eine Möglichkeit, das Zeitlimit für die "npm-Installation" zu definieren?

Erstellt am 14. Apr. 2020  ·  11Kommentare  ·  Quelle: npm/cli

Was warum

Im Moment haben wir ein Problem mit dem Paket, dessen Meta-Info-Datei (in der alle Versionen aufgeführt sind) mehr als 110 MB wiegt und das Herunterladen der Datei auf meinen Computer 2,5 Minuten dauert

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

Wo

In der lokalen Umgebung musste ich vorerst npm-Dateien optimieren, um das Standardzeitlimit zu ändern.
Im NPM-Debug-Protokoll habe ich festgestellt, dass die Nachricht Response timeout... stammt
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
Diese Quelle: https://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189

Ich habe das so fest codiert:

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

Wer

n / a

Verweise

n / a

Die Frage ist also:

Gibt es einen Parameter / ENV_VARIABLE, der vor dem Befehl npm install übergeben oder definiert werden kann, wodurch der Wert von this.timeout in dem von mir freigegebenen Code überschrieben wird?

Bug Needs Discussion Question Release 6.x patch

Hilfreichster Kommentar

Das aktuelle Update besteht also darin, auf NPM 6.14.5 zu aktualisieren.

Es wäre perfekt, wenn die neuesten Node.js-Versionen (10.x, 12.x, 13.x, 14.x) mit 6.14.5 anstelle von 6.14.4 :
https://nodejs.org/en/download/releases/

Alle 11 Kommentare

Erwähnenswert auch:
konnte im Code von @npm/cli oder node-fetch-npm nichts über 30000 was wie das "Standard-Timeout" ist, das irgendwie an node-fetch-npm

Scheint in make-fetch-pass verwendet zu werden, das in npm-registry-fetch und pacote verwendet wird. Wir stoßen auf ein Problem, bei dem die Metadaten so groß geworden sind, dass wir in einigen Umgebungen mehr als 30 Sekunden Zeit haben.

Es scheint immer noch keine Möglichkeit zu geben, die magische Option timeout zu konfigurieren - https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56 - L58

Gleich hier poste ich es auf ionischem Cli Github
https://github.com/ionic-team/ionic-cli/issues/4387

Ein Downgrade auf 6.13.x hat das Problem für mich behoben - https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

@darcyclarke für den

Das Upgrade von npm-registry-fetch in NPM v6.14.0 hat anscheinend unser Problem mit einer Zeitüberschreitung verursacht, wie @darrinholst bereits erwähnt hat:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

Ohne die Möglichkeit, das Zeitlimit für dieses npm-registry-fetch in NPM v6.14.x neu zu definieren, mussten wir die Node.js-Version auf 12.16.1 korrigieren, da es die letzte Version mit NPM v6.13.x ist.

Und es scheint, als wäre es ein Fehler, denn vor diesen Änderungen https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12 war ein riesiges Problem nicht.

@ sidoruk-sv danke, dass Sie uns darauf aufmerksam gemacht haben. Ich werde dies intern zurücknehmen und prüfen, ob wir einen Patch versenden können, um dieses Problem zu beheben und / oder eine Flagge zu finden / einzuführen.

Wir können unser Projekt nicht bereitstellen. Meistens tritt bei einer Webpack-Metadatei eine Zeitüberschreitung auf, manchmal eine Firebase. In den letzten Wochen wurde es schlimmer, anscheinend hat die Metadatei jetzt einen Punkt erreicht, an dem sie durchweg fehlschlägt. Wir werden versuchen, ein Downgrade auf 6.13.7 durchzuführen.

Bearbeiten: Nach dem Downgrade haben wir den ersten grünen Build nach 10+ fehlgeschlagen, sieht vielversprechend aus.

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

Verschieben wir das Standardzeitlimit für nrf v4 (npm v6) auf Null zurück, erhöhen es auf spätestens 5 m (npm v7) und fügen der CLI v7 eine Option --fetch-timeout , um dies explizit festzulegen.

Ich denke, das würde das unmittelbare Problem lösen und uns in Zukunft an einen besseren Ort bringen.

Das aktuelle Update besteht also darin, auf NPM 6.14.5 zu aktualisieren.

Es wäre perfekt, wenn die neuesten Node.js-Versionen (10.x, 12.x, 13.x, 14.x) mit 6.14.5 anstelle von 6.14.4 :
https://nodejs.org/en/download/releases/

Die Dokumentation zur npm-Konfiguration enthält mehrere Einträge für Zeitüberschreitungen. Ignoriert dieser Code diese Einstellungen oder gibt es keine Einstellung für diesen speziellen Fall und das ist das Problem?

Gibt es keine Einstellung für diesen speziellen Fall und das ist das Problem?

Ja, die Option sollte in Version 7 verfügbar sein

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

FaizenR picture FaizenR  ·  3Kommentare

theADAMJR picture theADAMJR  ·  3Kommentare

zypA13510 picture zypA13510  ·  4Kommentare

darcyclarke picture darcyclarke  ·  3Kommentare

dr-js picture dr-js  ·  3Kommentare