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)
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
}
t / a
t / a
Jadi pertanyaannya adalah:
npm install
, yang akan menimpa nilai this.timeout
dalam kode yang saya bagikan.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?
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
bukan6.14.4
:https://nodejs.org/en/download/releases/