خطأ أثناء التحديث ESOCKETTIMEDOUT registry.yarnpkg.com

محاولة تحديث Discourse عبر الإجراء اليدوي

git pull
./launcher rebuild app
...

./discourse-doctor يعرض خطأ

I, [2023-06-16T11:39:43.530890 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
error An unexpected error occurred: "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz: ESOCKETTIMEDOUT".
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean' failed with return #<Process::Status: pid 281 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
f485460571ab9e30e0d6917b05c9a8fe1772df13d8cae9fe67108961fae71039
==================== END REBUILD LOG ====================

نفس المشكلة عند محاولة التشغيل
./launcher rebuild app

حاولت تنزيل date-fns-2.29.3.tgz على مضيف Linux، ونجح الأمر.

wget https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz
Connecting to registry.yarnpkg.com (104.16.26.35:443)
saving to 'date-fns-2.29.3.tgz'
date-fns-2.29.3.tgz  100% |*************************************************************************************************************|  712k  0:00:00 ETA
'date-fns-2.29.3.tgz' saved

Discourse مستضاف على Alpine Linux VM

أواجه نفس المشكلة على خادم افتراضي خاص يعمل بنظام أوبونتو. ليس لدي أي فكرة.

لا يمكنني تحديد ما إذا كانت هذه هي المشكلة الحقيقية أم أن لديك مشكلة في شبكات دوكر.

إعجاب واحد (1)

من الممكن إصلاح هذا عن طريق إضافة المزيد من الوقت قبل أن يتخلى يارن عن المحاولة. لقد قدمت طلب سحب:

يمكنك إجراء هذا التغيير يدويًا كما أوضح ماريو لوريج (Mario Lurig):

انظر أيضًا:

3 إعجابات

ممتاز. تم الاقتباس للديمومة والبحث:

ومع ذلك، عندما كنت أنتظر اكتمال الخطوة 9 (بعد تشغيل ./discourse-setup) وكل شيء يتم بناؤه، كان يفشل بخطأ ESOCKETTIMEDOUT متعلق بـ yarn. آخر رسالة تحاول التشغيل هي [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.

الحل

تحتاج إلى تثبيت محرر؛ أفضل nano لذا apt-get install nano يقوم بالمهمة. ثم انتقل إلى /var/discourse/templates وشغل: nano web.template.yml. للمقارنة، إليك الملف الذي نسخته من github والمنطقة ذات الأهمية حول السطر 159. هل تبدو مألوفة؟ إنها نفس الأوامر المذكورة أعلاه قبل فشلها. نحتاج إلى إضافة قسم جديد فوق هذا السطر لزيادة المهلة.

  • exec: cd: $home cmd: - “su discourse -c ‘yarn config set network-timeout 600000 -g’”

احفظ هذا التغيير ثم أعد تشغيل ./discourse-setup وفويلا، اكتمل! سيستغرق الأمر بالتأكيد بعض الوقت، خاصة خطوة ضغط brotli، ولكنه سينتهي.

3 إعجابات

لقد واجهت نفس مهلة انتهاء الوقت، لكنني واجهت مشاكل في تطبيق الحل المقترح، لذا أود إضافة بعض التفاصيل.

أولاً، واجهت بعض الصعوبة في العثور على /var/discourse/templates، لأن تثبيت Discourse الخاص بي موجود في موقع غير قياسي. كنت أبحث داخل Docker، وهو ما لا معنى له بالطبع.

ثانياً، لم يعد رقم السطر 159 صحيحاً. أفترض أنك تشير إلى هذا القسم من template.yml:

- exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'

ثالثاً، لست على دراية تامة بـ yaml، أو pups، أو yarn، أو كيفية استخدامها في Discourse، ولم أرغب في التخمين. بدلاً من ذلك، جربت هذا التغيير على القسم الأصلي:

  - exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn config set network-timeout 600000 -g && yarn install --frozen-lockfile && yarn cache clean'

هذا يعمل بالنسبة لي. يستغرق ./launcher rebuild app الآن وقتاً طويلاً جداً (أكثر من ساعتين بالنسبة لي)، ولكنه على الأقل يكتمل، ويعمل المنتدى مرة أخرى.

أخيراً، أود أن أضيف أن هذه المشكلة (بالنسبة لي) لم تكن بالتأكيد بسبب نقص الذاكرة: أنا أستخدم خادم افتراضي خاص (VPS) بـ 32 جيجابايت مثبتة، منها 24 جيجابايت كانت متاحة عند حدوث المشكلة.

إعجابَين (2)