Admin page shows errors after upgrading to v3.5.3

The admin page is showing errors after upgrading from version v3.5.2 to v3.5.3

And reports the following error:

loader.js:247 Uncaught (in promise) Error: Could not find module discourse/admin/models/admin-plugin imported from discourse/plugins/docker_manager/discourse/models/repo
at loader.js:247:1
at a (loader.js:258:1)
at s.findDeps (loader.js:168:1)
at a (loader.js:262:1)
at s.findDeps (loader.js:168:1)
at a (loader.js:262:1)
at requireModule (loader.js:24:1)
at n.i [as getRoute] (index.ts:121:18)
at p._getQPMeta (index.ts:101:20)
(anonymous) @ loader.js:247
a @ loader.js:258
(anonymous) @ loader.js:168
a @ loader.js:262
(anonymous) @ loader.js:168
a @ loader.js:262
requireModule @ loader.js:24
i @ index.ts:121
_getQPMeta @ index.ts:101

It works normally after disabling plugins, but I can’t pinpoint which plugin is causing the issue. Can you help me take a look?

The issue persists when “Disable unofficial client plugin customizations” is enabled in Safe Mode, but it works correctly when “Disable all client plugin customizations” is enabled.

3.5.3 is no longer supported. Please see https://releases.discourse.org.

1 Like

As Nate said that is a very old version now. Maybe try a command line update.

1 Like

Which version do you recommend upgrading to? Will skipping multiple versions cause more compatibility issues?

It failed immediately after upgrading to 2026.1.1

1 Like

Check your /logs for suspect messages.

2 Likes

If the web upgrade fails, you need to use ssh to login as root and do a command line upgrade.

Can you try a command line rebuild as the reply above suggests? That will likely fix it, I’ve never seen an issue from version jumps..

1 Like

What is the specific command? My service is packaged into a Docker image and deployed on a remote server’s K8s cluster. The deployment uses the web_only method.

Additionally, when an error occurs on the administrator page, the following error message appears:

Go to where you installed Discourse and type ./launcher rebuild app - wherever discourse_docker is. I believe /var/discourse is the “recommended” place to put the script but it might be different for you.

That’s not supported. You’ll need to do something to load the latest image. You’ll need to migrate the database. There’s usually no problem upgrading multiple versions.

3 Likes

It seems the database migration failed. The following error was reported.

TOP => db:migrate => assets:precompile:asset_processor │
│ full trace by running task with --trace) │
│ executing /etc/runit/1.d/00-ensure-links │
│ executing /etc/runit/1.d/01-cleanup-web-pids │
│ executing /etc/runit/1.d/anacron │
│ executing /etc/runit/1.d/cleanup-pids │
│ stale PID files │
│ executing /etc/runit/1.d/copy-env │
│ runsvdir, PID is 1126 │
│ aborted! │
│ pnpm -C=frontend/asset-processor node build.js (Discourse::Utils::CommandError) │
│ Failed to switch pnpm to v10.28.0. Looks like pnpm CLI is missing at “/home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin” or is incorrect │
│ /home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin/pnpm EACCES

When I checked the specific pnpm path, I found that the path existed, but the pnpm.cjs file lacked execute permissions, which caused the error.

drwxrwxrwx root root /
drwxr-xr-x root root home
drwxr-x— discourse discourse discourse
drwxr-x— discourse discourse .local
drwxr-x— discourse discourse share
drwxr-x— discourse discourse pnpm
drwxr-x— discourse discourse .tools
drwxr-x— discourse discourse pnpm
lrwxrwxrwx discourse discourse 10.28.0 → 10.28.0_tmp_9_0
drwxr-x— discourse discourse 10.28.0_tmp_9_0
drwxr-x— discourse discourse bin
lrwxrwxrwx discourse discourse pnpm → ../node_modules/pnpm/bin/pnpm.cjs
drwxr-x— discourse discourse ..
drwxr-x— discourse discourse node_modules
drwxr-x— discourse discourse pnpm
drwxr-x— discourse discourse bin
-rw-r----- discourse discourse pnpm.cjs

Later, after pre-installing the corresponding version of pnpm using corepack in the image, the database migration succeeded. The service is now normal.

1 Like