Neuaufbau fehlgeschlagen - möglicherweise mit rolldown verbunden?

Hallo zusammen, ich habe gerade einen Neuaufbau mit discourse/base:2.0.20260617-0053 versucht. Allerdings erhalte ich einige Fehlermeldungen im Zusammenhang mit fehlenden Paketen.

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.

Ich habe versucht, die Node-Module zu löschen und manuell pnpm install auszuführen, aber ohne Erfolg. Ich habe auch pnpm approve-builds im Container ausgeführt, aber es wurde angezeigt, dass es keine Pakete zur Genehmigung gibt.

Hat jemand anderes dieses Problem schon gehabt? Ich habe einen Neuaufbau mit diesem Image für ein anderes Forum erfolgreich durchgeführt. Ich habe den Neuaufbau mit ./launcher rebuild app versucht.

Gibt es Neuigkeiten dazu oder Schritte, um den Wiederaufbau fortzusetzen? Danke!

Hast du irgendwelche Plugins installiert?

Nein, nur die üblichen offiziellen Floskeln.

Hi @tanya_byrne, nutzt du die „latest“-Version von Discourse unter einer Standardinstallation?

Bist du dir über irgendwelche signifikanten Unterschiede zwischen den beiden Maschinen/Foren im Klaren?

Es sieht so aus, als könnte dieser Fehler durch die Ausführung von rm -rf für ein Kern-Plugin verursacht worden sein. Das ist eine sehr riskante Aktion – alle Tests von Discourse werden mit allen Kern-Plugins durchgeführt. Daher würde ich empfehlen, diese Zeile aus deiner app.yml zu entfernen.

Dennoch können wir den Asset-Processor-Build verbessern, damit er nicht so katastrophal abbricht:

David, wie können wir dann Vorlagen in Kern-Plugins überschreiben, ohne zuerst ein Kern-Plugin zu löschen und es anschließend durch eine geforkte Version zu ersetzen? Ist das nicht unsicher? Können Assets übrig bleiben, die das Original widerspiegeln?

Ich habe diesen Ansatz in der Vergangenheit erfolgreich angewendet, als es einfach keine andere Option gab.

Das Überschreiben von Vorlagen ist keine offiziell unterstützte Funktion.

Natürlich kannst du es auf eigene Gefahr tun, und es wird wahrscheinlich funktionieren. Aber wir können das nicht garantieren oder dafür testen.

Ich schätze, dass du es hier weniger problematisch gemacht hast!

Ich wünschte nur, wir könnten eine Situation aufrechterhalten, in der die Plugins vollständig modular bleiben, wo dies möglich ist.

Das war tatsächlich das Problem. Haben Sie Empfehlungen zum Ausblenden/Entfernen dieser Plugins? Ich bin der Meinung, dass das Entfernen von Plugins, die wir nicht verwenden, den Build nicht beeinträchtigen sollte, da Plugins modular sein sollen.

Der “unterstützte” Weg ist, die Plugins über die Admin-Oberfläche zu deaktivieren.

Du kannst sie natürlich auch im Dateisystem löschen, und es wird “wahrscheinlich” funktionieren (wie du sagst, idealerweise sollten Plugins modular sein). Aber das testen wir derzeit nicht rigoros, also kann ich keine 100%ige Garantie dafür geben.

Danke, David, ich schätze die Orientierungshilfe.

Ich teile deine Meinung absolut.

Es macht für mich Sinn, dass man Plugins in der Admin-Oberfläche (standardmäßig) zu 100 % ausblenden sollte, um Unordnung zu reduzieren (nicht einfach nur deaktivieren).

Plugins sollten definitiv modular sein.

Während ich respektiere, dass es manchmal technische Überlegungen gibt, sollte dies meiner Meinung nach das ultimative Ziel sein.

Aber feiern wir auch die Tatsache, dass dieses Bündeln viel, viel schnellere Builds ermöglicht hat :rocket: