فشل إعادة البناء - ربما يتعلق بـ rolldown؟

مرحباً بالجميع، لقد حاولت للتو إعادة البناء باستخدام discourse/base:2.0.20260617-0053. ومع ذلك، أواجه بعض الأخطاء المتعلقة بنقص الحزم

Got some warnings
╭ Warning ─────────────────────────────────────────────────────────────────────╮
│                                                                              │
│   Ignored build scripts: core-js@2.6.12, core-js@3.49.0, lefthook@2.1.9,     │
│   rete@2.0.6.                                                                │
│   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
│   to run scripts.                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
Done in 10.4s using pnpm v10.28.0
Lockfile is up to date, resolution step is skipped
Already up to date

╭ Warning ─────────────────────────────────────────────────────────────────────╮
│                                                                              │
│   Ignored build scripts: core-js@2.6.12, core-js@3.49.0, lefthook@2.1.9,     │
│   rete@2.0.6.                                                                │
│   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
│   to run scripts.                                                            │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
.....
Successfully installed aws-sdk-translate-1.35.0
1 gem installed
rake aborted!
Discourse::Utils::CommandError: pnpm -C=frontend/asset-processor node build.mjs (Discourse::Utils::CommandError)
file:///var/www/discourse/node_modules/.pnpm/rolldown@1.1.2/node_modules/rolldown/dist/shared/error-T-E9reEy.mjs:48
        const wrapper = new Error(summary);
                        ^

Error: Build failed with 9 errors:

[RESOLVE_ERROR] Could not resolve './shims' in transpiler.js
   ╭─[ transpiler.js:1:8 ]
   │
 1 │ import "./shims";
   │        ────┬────
   │            ╰────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve './postcss' in transpiler.js
   ╭─[ transpiler.js:2:8 ]
   │
 2 │ import "./postcss";
   │        ─────┬─────
   │             ╰─────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve './asset-processor-rollup' in transpiler.js
   ╭─[ transpiler.js:3:8 ]
   │
 3 │ import "./asset-processor-rollup";
   │        ─────────────┬────────────
   │                     ╰────────────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve '@babel/standalone' in transpiler.js
   ╭─[ transpiler.js:4:45 ]
   │
 4 │ import { transform as babelTransform } from "@babel/standalone";
   │                                             ─────────┬─────────
   │                                                      ╰─────────── Tsconfig not found
───╯

[RESOLVE_ERROR] Could not resolve 'decorator-transforms' in transpiler.js
   ╭─[ transpiler.js:5:33 ]
   │
 5 │ import DecoratorTransforms from "decorator-transforms";
   │                                 ───────────┬──────────
   │                                            ╰──────────── Tsconfig not found
───╯
/var/www/discourse/lib/discourse.rb:180:in 'Discourse::Utils::CommandRunner#execute_command'
/var/www/discourse/lib/discourse.rb:146:in 'Discourse::Utils::CommandRunner#exec'
/var/www/discourse/lib/discourse.rb:33:in 'Discourse::Utils.execute_command'
/var/www/discourse/lib/asset_processor.rb:58:in 'AssetProcessor.build_asset_processor'
/var/www/discourse/lib/asset_processor.rb:107:in 'block in AssetProcessor.load_or_build_processor_source'
/var/www/discourse/lib/asset_processor.rb:86:in 'block in AssetProcessor.with_file_lock'
/var/www/discourse/lib/asset_processor.rb:84:in 'IO.open'
/var/www/discourse/lib/asset_processor.rb:84:in 'AssetProcessor.with_file_lock'
/var/www/discourse/lib/asset_processor.rb:103:in 'AssetProcessor.load_or_build_processor_source'
/var/www/discourse/lib/tasks/assets.rake:161:in 'block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake:27:in '<top (required)>'
/usr/local/bin/bundle:25:in 'Kernel#load'
/usr/local/bin/bundle:25:in '<main>'
Tasks: TOP => db:migrate => assets:precompile:asset_processor
(See full trace by running task with --trace)
19:signal-handler (1782860705) Received SIGTERM scheduling shutdown...
I, [2026-06-30T23:05:05.686770 #1]  INFO -- : Terminating async processes
I, [2026-06-30T23:05:05.686855 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 19
19:M 30 Jun 2026 23:05:05.697 * User requested shutdown...
19:M 30 Jun 2026 23:05:05.697 * Saving the final RDB snapshot before exiting.
19:M 30 Jun 2026 23:05:05.743 * DB saved on disk
19:M 30 Jun 2026 23:05:05.743 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 3131 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "tag" => "migrate", "hook" => "db_migrate", "cmd" => ["su discourse -c 'bundle exec rake db:migrate'"]}
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.

لقد حاولت حذف وحدات Node وتثبيت pnpm install يدوياً لكن دون جدوى. كما جربت pnpm approve-builds داخل الحاوية لكنها ذكرت أنه لا توجد حزم للموافقة عليها؟

هل واجه أي شخص آخر هذه المشكلة؟ لقد أكملت إعادة البناء باستخدام هذه الصورة لمنتدى آخر وكانت ناجحة. لقد حاولت إعادة البناء باستخدام ./launcher rebuild app

هل هناك أي أخبار حول هذا الأمر أو خطوات للسماح بإعادة البناء للمضي قدماً؟ شكراً!

هل لديك أي إضافات مثبتة؟

لا، فقط تلك المتعلقة بالخطاب الرسمي المعتاد

مرحبًا @tanya_byrne، هل تقوم بتشغيل الإصدار “أحدث” (latest) من Discourse، ضمن تثبيت قياسي؟

هل أنت على دراية بأي فروق جوهرية بين الجهازين/المنصتين؟

يبدو أن هذه الخطأ قد يكون ناتجًا عن تشغيل rm -rf على إضافة أساسية. هذا إجراء محفوف بالمخاطر جدًا - جميع اختبارات Discourse تتم مع وجود جميع الإضافات الأساسية. لذا، أوصي بإزالة هذا السطر من ملف app.yml الخاص بك.

مع ذلك، يمكننا تحسين بناء asset-processor بحيث لا يفشل بشكل كارثي:

ديفيد، إذن كيف يمكننا تجاوز القوالب في الإضافات الأساسية دون حذف الإضافة الأساسية أولاً ثم استبدالها بنسخة مشتقة؟ أليس ذلك غير آمن؟ هل يمكن أن تبقى الأصول التي تعكس النسخة الأصلية؟

لقد اتبعت هذا النهج بنجاح من قبل عندما لم يكن هناك خيار آخر.

تجاوز القوالب ليس شيئًا “مدعومًا”.

بالطبع، يمكنك القيام بذلك على مسؤوليتك الخاصة، وسيكون “على الأرجح” بخير. لكنه ليس شيئًا يمكننا ضمانه أو اختباره.

أقدّر حقاً أن جعلت الأمر أقل إشكالية هنا!

لكنني أتمنى فقط أن نتمكن من الحفاظ على وضع تظل فيه الإضافات منفصلة تماماً عن بعضها كلما أمكن ذلك.

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

الطريقة “الداعمة” هي تعطيل الإضافات من خلال واجهة المستخدم الإدارية.

أنت حر في حذفها من نظام الملفات، وستعمل “على الأرجح” (كما قلت، يجب أن تكون الإضافات وحدات مستقلة في المثالي). لكنها ليست شيئًا نختبره بدقة في الوقت الحالي، لذا لا يمكنني تقديم ضمان بنسبة 100% بشأنها.

شكراً لك ديفيد، أقدر التوجيه.

أشاركك رأيك تماماً.

يبدو لي منطقيًا أن يكون بإمكانك إخفاء الإضافات بنسبة 100% من واجهة المسؤول (بشكل افتراضي) لتقليل الفوضى (وليس مجرد تعطيلها).

يجب أن تكون الإضافات وحدات مستقلة بشكل قاطع.

على الرغم من أنني أحترم وجود اعتبارات تقنية أحيانًا، إلا أن هذا يجب أن يكون الهدف النهائي، في رأيي.

ولكن دعونا نحتفل أيضًا بحقيقة أن هذا التجميع قد سهل عمليات بناء أسرع بكثير :rocket: