Cli: [سؤال] هل هناك طريقة لتحديد مهلة "تثبيت npm"

تم إنشاؤها على ١٤ أبريل ٢٠٢٠  ·  11تعليقات  ·  مصدر: npm/cli

ماذا / لماذا

في الوقت الحالي ، لدينا مشكلة في الحزمة ، حيث يبلغ وزن ملف معلومات التعريف (حيث يتم سرد جميع الإصدارات) أكثر من 110 ميغابايت ويستغرق تنزيل الملف على جهازي 2.5 دقيقة ، بالنسبة لفريقنا ، يتسبب ذلك في فشل تثبيت npm المزعج بسبب

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

أين

في الوقت الحالي ، في البيئة المحلية ، اضطررت إلى ضبط ملفات npm لتغيير المهلة الافتراضية.
في سجل تصحيح الأخطاء NPM ، وجدت أن رسالة Response timeout... تأتي من
~/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/node-fetch-npm/src/body.js:189:16
هذه المصادر: https://github.com/npm/node-fetch-npm/blob/latest/src/body.js#L189

لقد قمت بترميز ذلك بهذه الطريقة:

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

منظمة الصحة العالمية

غير متوفر

المراجع

غير متوفر

إذن السؤال هو:

هل هناك معلمة / ENV_VARIABLE ، يمكن تمريرها أو تحديدها قبل الأمر npm install ، والتي ستتجاوز this.timeout في الكود الذي أشاركه.

Bug Needs Discussion Question Release 6.x patch

التعليق الأكثر فائدة

لذا فإن الإصلاح الحالي هو الترقية إلى NPM 6.14.5 .

سيكون مثاليًا عندما يتم شحن أحدث إصدارات Node.js (10.x ، 12.x ، 13.x ، 14.x) بـ 6.14.5 بدلاً من 6.14.4 :
https://nodejs.org/en/download/releases/

ال 11 كومينتر

وتجدر الإشارة أيضًا إلى:
تعذر العثور في الرمز @npm/cli أو node-fetch-npm أي شيء عن 30000 وهو مثل "المهلة الافتراضية" التي تم تمريرها إلى node-fetch-npm بطريقة ما

يبدو أنه يستخدم في make-fetch-يحدث والذي يستخدم في npm-Registry-fetch و pacote. نواجه مشكلة حيث أصبحت البيانات الوصفية كبيرة بما يكفي لدفعنا لأكثر من 30 ثانية في بعض البيئات.

لا تزال هناك طريقة لتكوين الخيار السحري timeout - https://github.com/npm/cli/blob/latest/lib/fetch-package-metadata.js#L56 - L58

نفس الشيء هنا أنشره على أيوني cli github
https://github.com/ionic-team/ionic-cli/issues/4387

الرجوع إلى الإصدار 6.13.x تم حله لي - https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -3c78131ed196efbd3ce9fdee2df36e24R79

darcyclarke في الوقت الحالي ، لدينا المزيد من المشاكل بسبب ذلك ، لأن أحدث إصدار من Node.js v12.16.2 تم شحنه مع NPM v6.14.x افتراضيًا.

يبدو أن ترقية npm-registry-fetch في NPM v6.14.0 تسببت في مشكلتنا مع انتهاء المهلة كما ذكر darrinholst سابقًا:
https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16

بدون القدرة على إعادة تعريف المهلة لهذا npm-registry-fetch في NPM v6.14.x ، كان علينا تثبيت إصدار Node.js إلى 12.16.1 لأنه الإصدار الأخير مع NPM v6.13.x.

ويبدو أنه خطأ ، لأنه قبل أن يتغير https://github.com/npm/cli/commit/ea0ff56cb6ad4bbf208dd3cf39a35e07fc2dff16#diff -acf38193ec0e2d9a3b9dc202f239a77aR12 ، لم تكن جميع ملفات التعريف الضخمة.

@ sidoruk-sv نقدر لك لفت انتباهنا إلى هذا. سأستعيد هذا داخليًا وأرى ما إذا كان بإمكاننا شحن تصحيح لحل هذه المشكلة و / أو البحث عن / تقديم علامة.

نحن غير قادرين على نشر مشروعنا ، وغالبًا ما تنتهي مهلة ملف تعريف webpack ، وأحيانًا Firebase. ازداد الأمر سوءًا في الأسابيع الماضية ، ويبدو أن ملف التعريف وصل الآن إلى نقطة كان فيها فشلًا باستمرار. سنحاول الرجوع إلى 6.13.7.

تعديل: بعد الرجوع إلى إصدار أقدم ، حصلنا على أول بنية خضراء بعد فشل 10+ ، تبدو واعدة.

راجع https://github.com/npm/npm-registry-fetch/issues/26

دعنا نعيد المهلة الافتراضية إلى الصفر لـ nrf v4 (npm v6) ، ونرفعها إلى 5 أمتار في الأحدث (npm v7) ، ونضيف خيار --fetch-timeout في CLI v7 لتعيين ذلك بشكل صريح.

أعتقد أن هذا سيحل المشكلة الفورية ويضعنا في وضع أفضل للمضي قدمًا.

لذا فإن الإصلاح الحالي هو الترقية إلى NPM 6.14.5 .

سيكون مثاليًا عندما يتم شحن أحدث إصدارات Node.js (10.x ، 12.x ، 13.x ، 14.x) بـ 6.14.5 بدلاً من 6.14.4 :
https://nodejs.org/en/download/releases/

وثائق التكوين npm لها عدة إدخالات للمهلة. هل هذا الرمز يتجاهل تلك الإعدادات ، أم أنه لا يوجد إعداد لهذه الحالة المحددة وهذه هي المشكلة؟

ألا يوجد إعداد لهذه الحالة بالتحديد وهذه هي المشكلة؟

نعم ، يجب أن يأتي الخيار في الإصدار v7

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات