你好,
我刚刚更新了我们的 Discourse 论坛,现在页面是空白的(首页和管理后台)。HTML 看起来没问题,RSS 也能正常工作。
我发现是由于我们的主题导致的 JavaScript 错误。问题可能出在这里吗?
![]()
我该如何解决?能否通过命令行修改或禁用主题的 JavaScript 代码?或者安装一个新主题?
编辑:我没有安装其他主题,所以无法使用 ?preview_theme_id=。
你好,
我刚刚更新了我们的 Discourse 论坛,现在页面是空白的(首页和管理后台)。HTML 看起来没问题,RSS 也能正常工作。
我发现是由于我们的主题导致的 JavaScript 错误。问题可能出在这里吗?
![]()
我该如何解决?能否通过命令行修改或禁用主题的 JavaScript 代码?或者安装一个新主题?
编辑:我没有安装其他主题,所以无法使用 ?preview_theme_id=。
您是否尝试过如何使用 Discourse 安全模式?
你在做什么
?
检查安全模式: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 安装一个新主题,或者修改现有的主题。我不知道该怎么做。
哦,所以你的默认主题里有损坏的内容,导致无法禁用它?如果是这样的话,那你确实应该始终把这些自定义设置放在主题组件中(虽然这时候告诉你这个可能不太合适!)。不过我也不完全确定情况就是这样。
我还不完全确定问题是否出在主题上。但如果是的话,是的,创建一个空主题并将其设为默认设置可能会解决问题。我不知道该怎么做 ![]()
我也不确定。![]()
我也不清楚。我想我能搞定,但我手头有一堆付费工作,正尽量不在周末处理。
你好 @CamilleRoux
我刚刚通过在前端开发控制台中将 User-Agent 字符串设置为 Google Bot 的方式,帮你检查了你的网站。这样会显示仅由 Rails 渲染的站点,而不会加载 Ember SPA。
从 Rails 的角度来看,你的网站状态是“正常”,这表明你的容器运行正常。正如你所推测的,问题出在你的主题(组件)中的 JavaScript 上。
请查看附件:
你能否进入 psql 提示符(或者如果你愿意,也可以使用 Rails 控制台),并运行以下查询:
discourse=# select count(*) from themes;
count
-------
22
(1 row)
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
顺便一提,
我刚刚为你测试了这一点。
在你运行我上面帖子中的查询以列出所有主题(并且你已记录当前主题状态)之后,假设你可以访问数据库并运行此查询(无论是通过 Rails 还是 psql),你可以尝试以下操作:
discourse=# update themes set enabled = false where component = true;
上述查询将禁用你所有的主题组件。
然后你可以尝试访问你出问题的网站,看看“会发生什么”。
如果我是你,基于以机器人用户代理检查你的网站的情况,我会禁用所有主题组件。
实际上,我会逐个禁用它们,从与导航链接相关的任何主题组件开始(参见下面的 JS 错误,作为起点);因为我对直接 SQL 数据库查询很熟悉且经验丰富。你具备扎实的 SQL 技能吗?
如果你对此不太放心,可以给我发消息并授予我访问权限,我会帮你摆脱这个“不太好的局面”。根据我目前掌握的信息,我很有信心能帮你让网站重新正常运行 ![]()
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 创建的)
附注:网站已经恢复运行,因为我使用的是未更新 Discourse 的备份。
那么,我认为我会先创建一个通用的新主题并将其设为默认主题,然后执行升级并修复你的主题。
小更新:我在 Discourse 的某些版本上遇到了这个 bug,但并非所有版本都有。在 stable 和 tests-passed 版本上运行正常,但在 beta 版本上不行。我承认该 bug 已经被修复,但尚未提交到 beta 分支。
但问题出在你的主题自定义上,还是默认主题上?
使用当前的测试版,无论使用何种主题,我都会遇到相同的错误。