BEHEBUNG: Fehlende rollup plugin Bundles bei Bedarf in Entwicklung kompilieren

In #38658 ist der Rollup-Plugin-Compiler standardmäßig aktiviert, jedoch kann ein Plugin verschwinden, wenn sein generierter Manifesteintrag fehlt oder veraltet ist, z. B. das Chat-Plugin.

Dieser Commit fügt die Logik hinzu, die den bestehenden Manifest-Suchpfad verwendet, um das Plugin-Bundle bei Bedarf in der Entwicklung zu kompilieren und dann die Suche erneut zu versuchen. Dadurch wird verhindert, dass Plugins wie Chat nach dem Rollup-Wechsel in der lokalen Entwicklung stillschweigend nicht geladen werden.

Außerdem wird ein fehlschlagendes Spec hinzugefügt, um eine Regression zu verhindern.


Vorher:

Selbst wenn das Plugin aktiviert war, passierte im Dev-Container nichts.

Nachher:

2 „Gefällt mir“

Plugin-Assets werden automatisch kompiliert, wenn Sie den Server im Entwicklungsmodus starten. Das ist die Zeile „[PluginJsWatcher]“ in dem Log, das Sie als Screenshot gesendet haben. Wir haben das System bewusst so gestaltet, dass es im Hintergrund abläuft, anstatt die Kompilierung während Webanfragen durchzuführen.

Viele unserer Teammitglieder nutzen dieses System seit einigen Wochen in der Entwicklung, es muss also etwas Spezifisches an Ihrem System sein, das zum Fehlschlagen führt. :thinking:

Wie starten Sie Ihren Server? Haben Sie ungewöhnliche Umgebungsvariablen gesetzt?

Ich habe den Server mit devcontainer gestartet, ihn mit git pull von einer früheren Version aktualisiert und dann STRG+UMSCHALT+B verwendet, um den Server zu starten. Danach wird das Plugin beim Start nie kompiliert.

Keine Umgebungsvariablen festgelegt.

Haben Sie in der Konsole die Zeilen [PluginJsWatcher] gesehen? Haben Sie so etwas wie [Plugin::JsManager] Finished initial compilation of plugins in 5.9s gesehen?

Vor der Änderung, nein.

Der Server ist gerade mit bereit gestartet, aber der Chat wird nicht kompiliert.

Ich lade eine Bildschirmaufnahme hoch.

1 „Gefällt mir“

Das Video scheint zu groß zu sein.

Versuchen Sie dies: /app/assets/generated entfernen

Die Konsole zeigt Folgendes an, aber Chat wird nie kompiliert.

Ember CLI läuft mit PID: 3456
CSS-Änderungs-Watcher wird gestartet
[ember-cli] Proxying zu http://127.0.0.1:3000
[ember-cli] building... 
[ember-cli] ...[BroccoliMergeFiles]
I, [2026-03-20T09:47:37.703686 #3481]  INFO -- : listening on addr=127.0.0.1:3000 fd=38
[ember-cli] ...[ConfigLoader]
[ember-cli] ...[Babel: ember-tracked-storage-polyfill > applyPatches]
[ember-cli] ...[Babel: pretty-text > applyPatches]
I, [2026-03-20T09:47:43.338485 #3466]  INFO -- : mold gen=0 pid=3481 ready
I, [2026-03-20T09:47:43.340508 #3466]  INFO -- : monitor pid=3466 ready
I, [2026-03-20T09:47:43.340654 #3466]  INFO -- : monitor process ready
I, [2026-03-20T09:47:43.361234 #3481]  INFO -- : service gen=0 spawning...
I, [2026-03-20T09:47:44.817214 #3481]  INFO -- : worker=0 gen=0 spawning...
[ember-cli] ...[Babel: @embroider/macros > applyPatches]
[ember-cli] ...[Babel: ember-this-fallback > applyPatches]
I, [2026-03-20T09:47:46.412287 #3466]  INFO -- : service gen=0 pid=4278 spawned
I, [2026-03-20T09:47:46.413532 #4278]  INFO -- : starting 1 supervised sidekiqs
I, [2026-03-20T09:47:46.716314 #3481]  INFO -- : worker=1 gen=0 spawning...
I, [2026-03-20T09:47:48.556407 #3466]  INFO -- : worker=0 gen=0 pid=4316 registered
I, [2026-03-20T09:47:48.610839 #4316]  INFO -- : worker=0 gen=0 pid=4316 ready
I, [2026-03-20T09:47:48.651842 #3481]  INFO -- : worker=2 gen=0 spawning...
I, [2026-03-20T09:47:50.233024 #3466]  INFO -- : worker=1 gen=0 pid=4371 registered
I, [2026-03-20T09:47:50.514859 #4371]  INFO -- : worker=1 gen=0 pid=4371 ready
I, [2026-03-20T09:47:50.758417 #4381]  INFO -- : Loading Sidekiq in process id 4381
I, [2026-03-20T09:47:52.373478 #3466]  INFO -- : worker=2 gen=0 pid=4413 registered
I, [2026-03-20T09:47:52.452613 #4413]  INFO -- : worker=2 gen=0 pid=4413 ready
[ember-cli] ...[@embroider/compat/app]
writing pid file /workspace/discourse/tmp/pids/plugin_js_watcher_0.pid for 4554
I, [2026-03-20T09:47:54.484062 #4554]  INFO -- : [PluginJsWatcher] Loading PluginJsWatcher in process id 4554
[ember-cli] ...[@embroider/webpack]
[Plugin::JsManager] Compiling 43 plugins...
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[@embroider/webpack]
[ember-cli] file added checklist
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[@embroider/webpack]
Finished Plugin JS watcher thread
/workspace/discourse/lib/asset_processor.rb:169:in 'MiniRacer::Context#call': terminated (MiniRacer::ScriptTerminatedError)
        from /workspace/discourse/lib/asset_processor.rb:169:in 'block in AssetProcessor.v8_call'
        from /workspace/discourse/lib/asset_processor.rb:168:in 'Thread::Mutex#synchronize'
        from /workspace/discourse/lib/asset_processor.rb:168:in 'AssetProcessor.v8_call'
        from /workspace/discourse/lib/asset_processor.rb:244:in 'AssetProcessor#rollup'
        from /workspace/discourse/lib/plugin/js_compiler.rb:21:in 'Plugin::JsCompiler#compile!'
        from /workspace/discourse/lib/plugin/js_manager.rb:132:in 'Plugin::JsManager#compile_js_bundle'
        from /workspace/discourse/lib/plugin/js_manager.rb:57:in 'block in Plugin::JsManager#compile!'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:650:in 'Parallel.call_with_index'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:620:in 'Parallel.process_incoming_jobs'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:600:in 'block in Parallel.worker'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:591:in 'Process.fork'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:591:in 'Parallel.worker'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:582:in 'block in Parallel.create_workers'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:581:in 'Array#each'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:581:in 'Enumerable#each_with_index'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:581:in 'Parallel.create_workers'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:520:in 'Parallel.work_in_processes'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:291:in 'Parallel.map'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/parallel-1.27.0/lib/parallel.rb:235:in 'Parallel.each'
        from /workspace/discourse/lib/plugin/js_manager.rb:56:in 'Plugin::JsManager#compile!'
        from /workspace/discourse/lib/plugin/js_manager.rb:190:in 'Plugin::JsManager#watch'
        from /workspace/discourse/lib/demon/plugin_js_watcher.rb:17:in 'Demon::PluginJsWatcher#after_fork'
        from /workspace/discourse/lib/demon/base.rb:188:in 'block in Demon::Base#run'
        from /workspace/discourse/lib/demon/base.rb:184:in 'Kernel#fork'
        from /workspace/discourse/lib/demon/base.rb:184:in 'Demon::Base#run'
        from /workspace/discourse/lib/demon/base.rb:177:in 'Demon::Base#start'
        from /workspace/discourse/lib/demon/base.rb:30:in 'block in Demon::Base.start'
        from <internal:numeric>:257:in 'Integer#times'
        from /workspace/discourse/lib/demon/base.rb:30:in 'Demon::Base.start'
        from /workspace/discourse/config/pitchfork.conf.rb:126:in 'block in Pitchfork::Configurator#load'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:631:in 'Pitchfork::HttpServer#service_loop'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:680:in 'block in Pitchfork::HttpServer#spawn_service'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:1222:in 'block in Pitchfork::HttpServer#fork_sibling'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:170:in 'block in Pitchfork.clean_fork'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Kernel#catch'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork.rb:168:in 'Pitchfork.clean_fork'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:690:in 'Pitchfork::HttpServer#spawn_initial_mold'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/lib/pitchfork/http_server.rb:176:in 'Pitchfork::HttpServer#start'
        from /home/discourse/.bundle/gems/ruby/3.4.0/gems/pitchfork-0.18.2/exe/pitchfork:110:in '<required>'
        from /workspace/discourse/bin/pitchfork:58:in 'Kernel#load'
        from /workspace/discourse/bin/pitchfork:58:in 'block in <main>'
        from /workspace/discourse/bin/pitchfork:58:in 'Kernel#fork'
        from /workspace/discourse/bin/pitchfork:58:in '<main>'
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[@embroider/webpack]
[ember-cli] ...[Babel: discourse > applyPatches]
[ember-cli] 
[ember-cli] Build successful (105607ms) – Serving on http://localhost:4200/
[ember-cli] 
[ember-cli] Slowest Nodes (totalTime >= 5%) | Total (avg)
[ember-cli] -+-
[ember-cli] @embroider/webpack (1) | 86394ms
[ember-cli] @embroider/compat/app (1) | 6764ms
[ember-cli] Babel: pretty-text (1) | 5364ms
[ember-cli] 
[ember-cli] building... 
[ember-cli] ...[@embroider/webpack]
[ember-cli] 
[ember-cli] Build successful (4541ms) – Serving on http://localhost:4200/
[ember-cli] 
[ember-cli] Slowest Nodes (totalTime >= 5%) | Total (avg)
[ember-cli] -+-
[ember-cli] @embroider/webpack (1) | 2508ms
[ember-cli] Funnel (179) | 1005ms (5 ms)
[ember-cli] @embroider/compat/app (1) | 415ms
[ember-cli] broccoli-persistent-filter:Mapper (3) | 353ms (117 ms)
[ember-cli] 

Aha, danke!

Es sieht so aus, als ob die anfängliche Kompilierung des Chats auf Ihrem Rechner abläuft. Wir erhöhen diesen Wert, damit er in langsameren Umgebungen besser funktioniert:

Wenn Sie in Ihrer Docker-Umgebung mehr CPU-/Speicherressourcen bereitstellen können, verbessert das Ihre Entwicklungserfahrung. Aber zumindest diese Erhöhung sollte es zum Funktionieren bringen.

2 „Gefällt mir“