Cli: [PERTANYAAN] Apakah ada cara untuk menentukan waktu tunggu untuk `npm install`

Dibuat pada 14 Apr 2020  ·  11Komentar  ·  Sumber: npm/cli

Apa sebabnya

Untuk saat ini, kami memiliki masalah dengan paket, file info meta (di mana semua versi dicantumkan) berbobot lebih dari 110Mb dan membutuhkan waktu 2,5 menit untuk mengunduh file di mesin saya, untuk tim kami itu menyebabkan pemasangan npm yang mengganggu gagal karena

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

Dimana

Untuk saat ini, di lingkungan lokal, saya harus menyetel file npm, untuk mengubah batas waktu default.
Dalam log debug NPM saya menemukan bahwa pesan Response timeout... berasal
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
Sumber yang satu ini: https://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189

Saya membuat hardcode itu sedemikian rupa:

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

WHO

t / a

Referensi

t / a

Jadi pertanyaannya adalah:

Apakah ada beberapa parameter / ENV_VARIABLE, yang dapat dilewatkan atau ditentukan sebelum perintah npm install , yang akan menimpa nilai this.timeout dalam kode yang saya bagikan.

Bug Needs Discussion Question Release 6.x patch

Komentar yang paling membantu

Jadi perbaikan saat ini adalah meningkatkan ke NPM 6.14.5 .

Akan sempurna jika versi Node.js terbaru (10.x, 12.x, 13.x, 14.x) dikirimkan dengan 6.14.5 bukan 6.14.4 :
https://nodejs.org/en/download/releases/

Semua 11 komentar

Juga perlu disebutkan:
tidak dapat menemukan kode @npm/cli atau node-fetch-npm apa pun tentang 30000 yang seperti "batas waktu default" diteruskan ke node-fetch-npm

Tampaknya digunakan dalam make-fetch-terjadi yang digunakan di npm-registry-fetch dan pacote. Kami mengalami masalah di mana metadata menjadi cukup besar untuk mendorong kami lebih dari 30 detik di beberapa lingkungan.

Tampaknya masih belum ada cara untuk mengonfigurasi opsi ajaib timeout - https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56 - L58

Sama disini saya posting di ionic cli github
https://github.com/ionic-team/ionic-cli/issues/4387

menurunkan versi ke 6.13.x menyelesaikannya untuk saya - https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

@darcyclarke untuk saat ini, kami mendapatkan lebih banyak masalah karena itu, karena Node.js v12.16.2 terbaru dikirimkan dengan NPM v6.14.x secara default.

Sepertinya mengupgrade npm-registry-fetch di NPM v6.14.0 menyebabkan masalah kami dengan batas waktu seperti yang disebutkan @darrinholst sebelumnya:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

Tanpa kemampuan untuk menentukan ulang waktu tunggu untuk npm-registry-fetch dalam NPM v6.14.x, kami harus menetapkan versi Node.js ke 12.16.1 karena ini adalah versi terakhir dengan NPM v6.13.x.

Dan sepertinya itu adalah bug, karena sebelumnya itu berubah https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12, file meta yang besar bukanlah masalah di semua file meta.

@ sidoruk-sv menghargai Anda karena telah memberitahukan hal ini kepada kami. Saya akan mengambil ini kembali secara internal & melihat apakah kita dapat mengirimkan tambalan untuk menyelesaikan ini & / atau menemukan / memperkenalkan sebuah bendera.

Kami tidak dapat menerapkan proyek kami, paling sering file meta webpack kehabisan waktu, terkadang firebase. Semakin buruk minggu-minggu terakhir, tampaknya file meta sekarang mencapai titik yang gagal secara konsisten. Kami akan mencoba menurunkan versi ke 6.13.7.

Sunting: setelah menurunkan kami mendapat bangunan hijau pertama setelah 10+ gagal, terlihat menjanjikan.

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

Mari kita pindahkan batas waktu default kembali ke nol untuk nrf v4 (npm v6), naikkan hingga 5m di terbaru (npm v7), dan tambahkan opsi --fetch-timeout di CLI v7 untuk menyetel ini secara eksplisit.

Saya pikir itu akan menyelesaikan masalah langsung dan menempatkan kami di tempat yang lebih baik ke depan.

Jadi perbaikan saat ini adalah meningkatkan ke NPM 6.14.5 .

Akan sempurna jika versi Node.js terbaru (10.x, 12.x, 13.x, 14.x) dikirimkan dengan 6.14.5 bukan 6.14.4 :
https://nodejs.org/en/download/releases/

dokumentasi konfigurasi npm memiliki beberapa entri untuk waktu tunggu. Apakah kode ini mengabaikan pengaturan tersebut, atau tidak ada pengaturan untuk kasus khusus ini dan itulah masalahnya?

apakah tidak ada pengaturan untuk kasus khusus ini dan itulah masalahnya?

ya, opsi harus datang di v7

Apakah halaman ini membantu?
0 / 5 - 0 peringkat