У одного администратора возникла странная ошибка после обновления Discourse. Ошибка возникает, когда пользователь нажимает кнопку «Назад» или логотип сайта. Похоже, это запускает JavaScript для перехода в корень/на главную страницу сайта, но вместо этого возникают следующие ошибки:
Также я обнаружил, что это происходит при любых кликах по навигационной панели, например, при попытке перейти в /admin.
Есть ли какие-то идеи, как углубиться в расследование? Ошибок в production.log или где-либо ещё не видно, так что это действительно поставило в тупик, поскольку проблема, похоже, связана с JavaScript.
До сих пор упираюсь в тупики при дальнейшей отладке. Я склонен подозревать, что «Безопасный режим» не полностью отключает JavaScript из-за этого… Есть ли ещё какой-то шаг, который мог бы полностью исключить JavaScript из функционала для тестирования?
Доступен ли ваш сайт для публичного доступа? Если да, не могли бы вы поделиться ссылкой? (Если вы предпочитаете не публиковать её открыто, можно отправить в личные сообщения).
Спасибо за ссылку, @mreach. Со своей стороны я не вижу никаких очевидных проблем.
Вы упомянули, что это затрагивает только одного пользователя на сайте. Знаете ли вы, ограничена ли проблема одним браузером/устройством? Или это происходит с этим пользователем даже при входе в систему с другого устройства?
Если дело только в одном браузере/устройстве, это может указывать на то, что расширение браузера (например, блокировщик рекламы) мешает работе кода Discourse.
Если проблема проявляется во всех браузерах, это сложнее. Установлены ли на вашем форуме сторонние плагины? Также было бы интересно узнать, какую «домашнюю страницу по умолчанию» настроил пользователь (это можно найти в его настройках «интерфейса» Discourse).
Спасибо — да, у меня были в основном те же мысли. Я попросил их отключить все расширения и очистить все данные браузера. Только что ещё один пользователь сообщил о той же проблеме… И оба они используют Chrome. Я попросил их попробовать Firefox и Brave, и каждый из них сказал, что там всё работает, но ничто из того, что они пробовали, не помогает снова заставить Chrome работать «правильно». Я ещё раз спросил их о результатах в режиме инкогнито, и оба сообщили, что в инкогнито всё работает. И всё это произошло после последнего обновления Discourse, так что, похоже, что-то не очищается в JavaScript каким-то образом… Что я действительно не понимаю, как это возможно.
Я спросил их, что они настроили в качестве домашней страницы… Сообщу вам. Это очень хорошая идея, которая мне раньше не приходила в голову…
У пользователя, у которого возникла проблема, в качестве домашней страницы установлена «Категории»:
Если изменить её на другую, например «Последние», то домашняя страница загружается при клике на логотип сайта и использовании стрелки «Назад» в браузере. Однако, если вернуть обратно «Категории» вместо «Последних», проблема/ошибка возвращается.
Также этот пользователь является администратором. При клике на иконку «гамбургер» в правом верхнем углу и выборе «Администрирование» у него появляется та же ошибка, о которой сообщалось выше — даже если домашняя страница изменена на «Последние» вместо «Категорий».
Конечно, это новая информация, но с моей точки зрения она не совсем помогает. Хм.
Есть ли возможность получить более подробную информацию об этих ошибках? Они должны быть раскрываемыми и, надеюсь, содержать немного больше деталей о каждой ошибке.
Будет полезно узнать, что находится внутри .... Если вы нажмёте на маленький треугольник слева от лога, он должен развернуться и показать дополнительную информацию. Копия/вставка или скриншот этого могут помочь.
Отдельно: видите ли вы какие-либо ошибки на стороне сервера (в /logs)? И используете ли вы последнюю версию Discourse?
Полагаю, в момент возникновения ошибки ваш сайт не находился на плановом техническом обслуживании? В таком случае проблема, скорее всего, кроется в реализации или конфигурации прокси. Чтобы исключить этот вариант, сможете ли вы открыть доступ к Discourse напрямую на портах 80/443? (согласно нашим стандартным инструкциям по установке)
Конечно, возможно, что ошибка в самом Discourse приводит к тому, что прокси отображает это сообщение. Однако диагностировать это сложно, не зная, что именно возвращал Discourse. Возможно, ваш прокси ведёт логи ответов от upstream-сервера Discourse?