Error de reconstrucción - ¿posiblemente relacionado con rolldown?

Hola a todos, acabo de intentar una reconstrucción usando discourse/base:2.0.20260617-0053. Sin embargo, estoy obteniendo algunos errores relacionados con paquetes faltantes

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.

He intentado eliminar los módulos de node y ejecutar manualmente pnpm install, pero sin éxito. También probé pnpm approve-builds en el contenedor, pero indicó que no hay paquetes para aprobar.

¿Alguien más ha encontrado este problema? He completado una reconstrucción usando esta imagen para otro foro y fue exitosa. Intenté la reconstrucción usando ./launcher rebuild app.

¿Hay alguna novedad al respecto o pasos para permitir que se continúe con la reconstrucción? ¡Gracias!

¿Tienes algún plugin instalado?

No, solo los habituales del discurso oficial

Hola @tanya_byrne, ¿estás ejecutando la versión «latest» de Discourse, en una instalación estándar?

¿Eres consciente de alguna diferencia significativa entre las dos máquinas/foros?

Parece que este error podría ser causado por ejecutar rm -rf en un plugin principal. Eso es algo muy arriesgado: todas las pruebas de Discourse se realizan con todos los plugins principales presentes. Así que recomendaría eliminar esa línea de tu app.yml.

Dicho esto, podemos mejorar esta compilación del procesador de activos para que no se rompa tan catastróficamente:

David, ¿entonces cómo anulamos plantillas en plugins principales sin primero eliminar un plugin principal y luego reemplazarlo con una versión bifurcada? ¿No es eso seguro? ¿Pueden quedar activos que reflejen el original?

He seguido exitosamente este enfoque antes cuando simplemente no había otra opción.

Anular plantillas no es algo “soportado”.

Por supuesto, puedes hacerlo bajo tu propio riesgo, y “probablemente” irá bien. Pero no es algo que podamos garantizar o probar.

¡Agradezco que hayas hecho que esto sea menos problemático aquí!

Solo desearía que pudiéramos mantener una situación en la que los plugins siguieran siendo completamente modulares cuando esto fuera posible.

Efectivamente, ese era el problema. ¿Tienes alguna recomendación para ocultar o eliminar estos plugins? Me parece que eliminar plugins que no utilizamos no debería romper la compilación, ya que los plugins se supone que son modulares.

La forma «soportada» es desactivar los complementos a través de la interfaz de administración.

Eres libre de eliminarlos del sistema de archivos, y «probablemente» funcionará (como dices, idealmente los complementos deberían ser modulares). Pero no es algo que probemos rigurosamente en este momento, así que no puedo garantizarlo al 100 %.

Gracias, David, agradezco la orientación.

Compartilo totalmente tu opinión.

Tiene sentido para mí que debas poder ocultar plugins al 100% de la interfaz de Administrador (por defecto) para reducir el desorden (no simplemente desactivarlos).

Los plugins deberían ser definitivamente modulares.

Aunque respeto que a veces hay consideraciones técnicas, esto en mi opinión debería ser el objetivo final.

Pero también celebremos el hecho de que este agrupamiento ha facilitado construcciones mucho, mucho más rápidas :rocket: