Пустой сайт после обновления

Привет,

Я только что обновил наш форум Discourse, и теперь он пустой (главная страница и админка). HTML выглядит нормально, RSS работает.

Я обнаружил ошибки JS, связанные с нашей темой. Может ли проблема быть в этом?
Capture d'écran 2020-08-22 à 15.57.03

Как это исправить? Могу ли я изменить/отключить JS-код моей темы через CLI? Установить новую тему?

Редактирование: У меня нет других установленных тем, поэтому я не могу использовать ?preview_theme_id=

Привет, @CamilleRoux

Если вы уверены в работе с прямыми SQL-запросами к базе данных, вы также можете изменить тему по умолчанию напрямую в БД с помощью SQL.

Надеемся, это поможет.

Вы пробовали Как использовать безопасный режим Discourse?

Что вы делаете :thinking: ?

  • Проверьте безопасный режим: https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • Журналы https://forum.humancoders.com/logs (частные?)

Попробуйте запустить это через SSH:

cd /var/discourse
git pull
./launcher rebuild app

Безопасный режим не работает… та же ошибка:

ReferenceError: Discourse is not defined
    at https://forum.humancoders.com/assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1:1

Я уже выполнил пересборку ./launcher rebuild app

У меня нет других установленных тем, поэтому мне нужно либо установить новую тему через CLI, либо изменить существующую. Я не знаю, как это сделать

О, значит, в вашей теме по умолчанию есть неработающие элементы, и нет способа её отключить? Если дело в этом, то именно поэтому вам стоит всегда размещать такие настройки в компонентах темы (хотя сейчас не самое подходящее время, чтобы говорить вам об этом!). (Но я не до конца уверен, что дело именно в этом).

И у вас нет сторонних плагинов?

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

Я пока не до конца уверен, что проблема в теме.
Но если это так, то да, создание пустой темы и установка её по умолчанию могло бы решить проблему. Я не знаю, как это сделать :frowning:

Я тоже. :man_shrugging:

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

Привет, @CamilleRoux

Я только что проверил ваш сайт для вас, установив строку User-Agent в консоли разработчика как Google Bot. Это отобразит только сайт на Rails без Ember SPA.

Вы можете видеть, что ваш сайт находится в состоянии «OK» с точки зрения Rails, что указывает на то, что ваш контейнер работает нормально и, как вы и предположили, у вас проблема с JavaScript в вашей теме (компоненте).

См. вложение:

@CamilleRoux

Можете ли вы перейти к приглашению psql (или использовать rails console, если хотите) и выполнить следующие запросы:

Давайте проверим, сколько тем у вас установлено:

discourse=# select count(*) from themes;
 count 
-------
    22
(1 row)

Давайте проверим, какой у вас сейчас ID темы по умолчанию:

discourse=# select value from site_settings where name = 'default_theme_id';
 value 
-------
 3
(1 row)

Также, можете ли вы выполнить этот запрос?

discourse=# select id, name, component, enabled from themes;
 id |           name            | component | enabled 
----+---------------------------+-----------+---------
  3 | Light                     | f         | t
  6 | Minima                    | f         | t
  7 | Hamburger Theme Selector  | t         | t
  2 | Material Dark             | f         | t
  8 | Vincent                   | f         | t
  5 | Material                  | f         | t
  9 | Simple                    | f         | t
 10 | Graceful Wide             | f         | t
 11 | Dark Wide                 | f         | t
 14 | Alien Night               | f         | t
 39 | md-composer-extras-neo    | t         | t
 40 | Plugin Outlets            | t         | f
 15 | User Card Directory       | t         | f
 41 | Raw Post Button           | t         | t
  4 | Graceful                  | f         | t
  1 | Dark for GSE              | f         | t
 42 | Dark                      | f         | t
 43 | discourse gifs            | t         | t
 44 | Cookie Consent Banner     | t         | t
 46 | Graceful Edits            | t         | t
 45 | Neo Stuff Scratch Sheets  | t         | t
 48 | Unformatted Code Detector | t         | t

Кстати,

@CamilleRoux

Я только что протестировал это для вас.

После выполнения запросов из моего предыдущего сообщения для вывода списка всех ваших тем (и при условии, что у вас есть запись о текущем состоянии тем), если у вас есть доступ к базе данных и вы можете выполнить этот запрос — через Rails или напрямую из psql — попробуйте следующее:

Запрос для отключения всех компонентов тем

discourse=#  update themes set enabled = false where component = true;

Вышеуказанный запрос отключит все компоненты ваших тем.

Затем вы сможете увидеть, «что произойдёт», когда попытаетесь получить доступ к вашему неработающему сайту.

Если бы я оказался в вашей ситуации, основываясь на проверке вашего сайта как бот-агент, я бы отключил все компоненты тем.

На самом деле, я бы отключал их по одному, начиная с любого компонента темы, связанного с навигационными ссылками (см. ошибку JS ниже — это хорошая отправная точка), поскольку я уверенно и с опытом работаю с прямыми SQL-запросами к БД. У вас есть сильные навыки работы с SQL?

Если вы не чувствуете себя комфортно с этим, вы можете написать мне и предоставить доступ, и я помогу вам преодолеть эту «не очень хорошую ситуацию», в которой вы оказались. Я почти уверен, основываясь на имеющейся у меня информации, что смогу помочь вам снова запустить сайт :slight_smile:

Смотрите также вашу ошибку JS:
Discourse.ExternalNavItem=Discourse.NavItem.extend({href:function(){return this.get('href');}.property('href')});I18n.translations.fr.js.filters.formations={title:"Formations",help:"Formations pour développeur·se·s"};Discourse.NavItem.reopenClass({buildList:function(category,args){var list=this._super(category,args);list.push(Discourse.ExternalNavItem.create({href:'https://www.humancoders.com/',name:'formations'}));return list;}});jQuery(function($){$(document).on("ready",function(){if(Cookies.get('hcFirstPage')==undefined){$(document).on('click','.toggle-menu',function(e){e.preventDefault();$('.main-nav').toggleClass('show');});var tweenBounce=TweenMax.to('#topbar',1.2,{maxHeight:"50px",delay:2,ease:Power1.easeInOut});var tweenBounceBack=TweenMax.to('#topbar',1.2,{maxHeight:"4px",delay:5.5,ease:Power1.easeInOut});Cookies.set('hcFirstPage',true,{expires:.04});}else{var tweenBounce=TweenMax.to('#topbar',0);}
window.addEventListener('unload',function(){Cookies.remove('hcFirstPage');});var tweenOpen,tweenClose;$('.topbar-toggle').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('.topbar-toggle').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('#topbar').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});});});

ОК, спасибо, ребята, за помощь.
Это старая установка, и у меня не было установленных других тем или компонентов. Поэтому вы не могли сменить мою тему или отключить все компоненты.
Поэтому я восстановил старую резервную копию, обновил тему, а затем обновил Discourse. Стало лучше, но у меня всё ещё осталась одна ошибка (из двух ранее).

Вот эта ошибка:

Uncaught ReferenceError: Discourse is not defined
<anonymous> /assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1

Вот что содержится в этом файле:

Discourse.start();

У меня, возможно, осталась старая версия темы по умолчанию? (текущая тема была создана в 2016 году путём добавления некоторых CSS и JS к теме по умолчанию)

PS: Сайт снова работает, потому что я использую резервную копию без обновления Discourse.

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

Небольшое обновление: у меня есть ошибка на некоторых версиях Discourse, но не на всех.
На stable и tests-passed всё работает корректно, но на beta — нет. Признаю, ошибка уже исправлена, но изменения ещё не внесены в ветку beta.

Но проблема в вашей кастомизации темы или в стандартной?

С текущей бета-версией у меня возникает одна и та же ошибка, независимо от темы.