再構築に失敗しました - 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_modules の削除と手動での pnpm install を試みましたが、解決しませんでした。また、コンテナ内で pnpm approve-builds を実行してみましたが、承認すべきパッケージがない旨が表示されました。

同じ問題に遭遇した方はいますか?別のフォーラムではこのイメージを使用した再構築に成功しています。./launcher rebuild app を使用して再構築を試みました。

これに関する最新情報や、再構築を進めるための手順はありますか? よろしくお願いします!

プラグインはインストールしていますか?

いいえ、通常の公式な話の範囲内だけです

@tanya_byrne さん、こんにちは。標準インストール環境で、Discourse の「最新」バージョンを実行していますか?

2つのマシン/フォーラム間に、どのような大きな違いがあるかご存知ですか?

このエラーは、コアプラグインに対して rm -rf を実行したことが原因のようです。これは非常に危険な操作です。Discourseのテストはすべて、コアプラグインがすべて存在する状態で実行されています。そのため、app.ymlからその行を削除することをお勧めします。

ただし、このアセットプロセッサのビルドを改善して、これほど深刻な破損が発生しないようにすることは可能です:

デビッド、では、コアプラグインをまず削除してフォーク版に置き換えることなく、コアプラグインのテンプレートをオーバーライドするにはどうすればよいのでしょうか? それでは安全ではありませんか? 元の状態を反映するアセットが残る可能性はありませんか?

以前、他に選択肢がない場合にこのアプローチを成功裡に実施したことがあります。

テンプレートをオーバーライドすることは「サポート」されていません。

もちろん、自己責任で実行することは可能で、「おそらく」問題ないでしょう。ただし、それを保証したりテストしたりすることはできません。

それでも、ここでの問題が軽減されたことは高く評価します。

可能であれば、プラグインが完全にモジュール化された状態を維持できたらいいのですが。

確かにそれが問題でした。使っていないプラグインを非表示または削除する方法について、何かおすすめはありますか?プラグインはモジュール式であるべきなので、使っていないプラグインを削除してもビルドが壊れるべきではないと感じています。

「サポート対象」の方法は、管理UI経由でプラグインを無効化することです。

ファイルシステムから削除することも自由ですが、おそらく動作するでしょう(おっしゃる通り、プラグインは理想を言えばモジュール式であるべきです)。ただし、現時点ではこれを厳密にテストしているわけではないため、100%の保証はできません。

Davidさん、ご指導ありがとうございます。

あなたの意見に完全に同感です。

管理インターフェースからプラグインを100%隠蔽できる(デフォルトで)ようにすることで、視覚的な混乱を減らせる(単に無効化するのではなく)というのは理にかなっていると思います。

プラグインは確実にモジュール式であるべきです。

技術的な考慮事項があることは理解していますが、これが究極の目標であるべきだと私は考えます。

ただし、このバンドリングによりビルドが大幅に高速化したことも祝うべきですね :rocket: