После обновления до v3.5.3 возникли проблемы на странице администратора

После обновления с версии v3.5.2 до v3.5.3 административная панель перестала работать корректно

Также появляется следующая ошибка:

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

После отключения плагинов всё работает нормально, но не удаётся определить, какой именно плагин вызывает проблему. Можете ли вы помочь разобраться?

Проблема сохраняется, когда в безопасном режиме отключена «кастомизация неофициальных клиентских плагинов», но работает нормально при отключении «всей кастомизации клиентских плагинов».

Версия 3.5.3 больше не поддерживается. Пожалуйста, ознакомьтесь с информацией на странице https://releases.discourse.org.

1 лайк

Как сказал Нейт, это сейчас очень старая версия. Попробуйте, возможно, обновить через командную строку.

1 лайк

Какую версию вы рекомендуете для обновления? Не возникнет ли больше проблем с совместимостью при обновлении через множество версий?

После обновления до версии 2026.1.1 процесс сразу же завершился с ошибкой

1 лайк

Проверьте /logs на наличие подозрительных сообщений.

2 лайка

Если обновление веб-интерфейса не удалось, вам необходимо войти через SSH от имени root и выполнить обновление из командной строки.

Можете попробовать выполнить пересборку через командную строку, как предлагается в ответе выше? Это, скорее всего, исправит проблему. Я никогда не сталкивался с ошибками из-за скачков версий.

1 лайк

Можете уточнить, какая именно команда используется? Мой сервис упакован в Docker-образ и развернут в кластере Kubernetes на удаленном сервере. Развертывание выполнено в режиме web_only.

Кроме того, при возникновении ошибок на странице администратора появляется следующее сообщение:

Перейдите в каталог, куда вы установили Discourse, и введите ./launcher rebuild app — там, где находится discourse_docker. Я полагаю, что /var/discourse — это «рекомендуемое» место для размещения скрипта, но у вас оно может быть другим.

Это не поддерживается. Вам нужно выполнить действия для загрузки последнего образа. Также потребуется миграция базы данных. Обычно при обновлении нескольких версий проблем не возникает.

3 лайка

Похоже, миграция базы данных не удалась. Появилась следующая ошибка.

TOP => db:migrate => assets:precompile:asset_processor │
│ полный трассировочный вывод можно получить, запустив задачу с флагом --trace) │
│ выполняется /etc/runit/1.d/00-ensure-links │
│ выполняется /etc/runit/1.d/01-cleanup-web-pids │
│ выполняется /etc/runit/1.d/anacron │
│ выполняется /etc/runit/1.d/cleanup-pids │
│ устаревшие PID-файлы │
│ выполняется /etc/runit/1.d/copy-env │
│ runsvdir, PID 1126 │
│ прервано! │
│ pnpm -C=frontend/asset-processor node build.js (Discourse::Utils::CommandError) │
│ Не удалось переключить pnpm на версию v10.28.0. Похоже, что CLI pnpm отсутствует по пути “/home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin” или настроен неверно │
│ /home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin/pnpm EACCES

При проверке конкретного пути pnpm я обнаружил, что путь существует, но файл pnpm.cjs не имеет прав на выполнение, что и вызвало ошибку.

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

Позже я предварительно установил соответствующую версию pnpm с помощью corepack в образе, после чего миграция базы данных прошла успешно. Теперь сервис работает нормально.

1 лайк