我目前已升级到最新的提交版本(105634435f)。我通常每周左右升级一次 Discourse,一般都不会有任何问题。但这次多个主题组件无法加载。所谓“无法加载”,是指这些组件不再显示。管理面板中的日志功能并未显示任何与这个问题相关的异常信息。许多错误似乎只是偶发事件,并且已经持续了一段时间。例如罕见的 MimeType 错误以及访问 Google DNS 的超时问题,这些情况也很少出现。
以下插件在升级后无法加载:
DiscoTOC
discourse gifs
Discourse Jitsi
Hamburger Theme Selector
Nav Links Component
Tag Icons
目前正常工作的只有:
Discourse Kanban
Easy Footer
如果需要更多信息(我想应该是需要的),我很乐意提供,请随时告知。这篇帖子主要是想提醒一下,似乎出了什么问题,而且很可能是最近某次更新导致的。抱歉信息不够详细……
4 个赞
此外,非严格模式下的 JavaScript 变量定义,例如:
xxx = 330;
而不是
var xxx = 330;
会导致 JS“未定义变量”错误。我们不得不在脚本中修改所有这些情况。
您知道为什么在组件中对非严格定义的 JS 变量会抛出错误吗?这是后处理错误吗?这里有什么变化吗?
Falco
(Falco)
2021 年4 月 7 日 15:57
6
导致此问题的变更已在1小时前回滚,如果您的站点受到影响,请更新至最新版本。
9 个赞
Osama
2021 年4 月 7 日 16:41
7
补充一下 Falco 所说的内容:该变更将在未来几天内重新添加,但在重新添加之前,我会确保所有官方主题/组件都与该变更兼容。因此,如果您再次在官方主题/组件中遇到该问题,更新它们即可解决。
我还会发布一篇帖子,说明如何使主题/组件兼容,以帮助那些在网站上使用自定义/私有组件的用户。
对于今天带来的不便,我深表歉意。
6 个赞
Pad_Pors
(Pad Pors)
2021 年4 月 7 日 16:45
8
我们的一款主题(横幅主题)已被完全覆盖回初始格式,我们之前进行的所有更改都已丢失。该主题自 2018 年以来未进行过任何更新。我们能否恢复这些更改?
Osama
2021 年4 月 7 日 16:54
9
2 个赞
这是否也解释了 JavaScript 变量定义的问题?如果是,是如何解释的?
Benjamin_D
(Benjamin Decotte)
2021 年4 月 7 日 17:26
11
我不认为这个问题与这个已回退的功能有关。几周前我在一个组件上遇到过类似情况,可能是在分叉指示器功能(该功能涉及插件,所以:roll_eyes:可能也不相关,但我当时不得不分叉该组件以进行修改)。
1 个赞
这真的很奇怪,我们从未遇到过这个问题。它只是随着最新版本的出现而冒了出来。我想知道这里到底发生了什么。
Falco
(Falco)
2021 年4 月 7 日 18:24
13
这是一个复杂的变更,同时也影响了主题中的“内联”JavaScript 代码。该变更已被回滚,并将在未来几天内重新调整后再次提交。您可以在 https://github.com/discourse/discourse/pull/12517 查看详细信息。
3 个赞
Osama
2021 年4 月 7 日 18:42
14
是的,那个更改正是导致你在主题中遇到问题的原因。我需要稍微详细地解释一下主题系统,以说明发生了什么。在 Discourse 主题或组件中添加 JS 有两种方式:第一种是在 head_tag.html 文件中使用 <script type="text/discourse-plugin"> 标签,第二种是使用独立的 JS 文件,这些文件位于你的主题或组件中名为 javascripts 的目录内。
在我今天进行更改之前,那些特殊脚本标签内的 JavaScript 是以依赖 Discourse 全局变量的方式处理的,而在使用 Ember CLI 开发 Discourse 时,该变量是不可用的。在我今天推送的更改中,我让 Discourse 将那些标签内的 JS 视为来自独立文件,从而使我们能够避免使用 Discourse 全局变量。
现在,将 JavaScript 标签视为文件的一个“副作用”是,标签内的 JavaScript 将包含 "use strict" 指令,而此前并没有该指令。该指令导致了你所看到的错误:
我建议你在主题中保留今天所做的所有更改,因为当我把我的更改加回来时,JS 标签将再次被当作独立文件处理。
6 个赞
是的,那只是我们代码中一些宽松的默认定义,在将其改为严格定义后,一切运行正常。
无论如何,感谢你更详细地解释了这一点。这对其他人可能也有帮助。
1 个赞
Pad_Pors
(Pad Pors)
2021 年4 月 8 日 05:16
16
是的,所有修改都消失了,从 CSS、JS 的更改,甚至文本的更改都不见了: 也就是说,我的主题恢复到了初始格式,文本变成了“Lorem ipsum dolor sit amet …”。不过,我会使用备份,但升级后出现这种情况确实很奇怪。
1 个赞
Don
2021 年4 月 8 日 06:40
17
你好 @Pad_Pors ,
我认为你的问题更与此相关。
For quite a while, best practice has been to avoid editing themes installed from a remote Git repository locally on Discourse. Any changes to theme code or uploads get wiped out when updating the theme from the remote repo.
In this commit, we’ve removed the ability to locally edit a remote theme and are now enforcing this best practice in Discourse.
What happens if I have a remote theme with local changes?
Nothing at this point. Your theme stays as is until you remove it or update it from re…
关于你提到的另一个话题:
所以我认为你有一段时间没有更新你的 Discourse 了。
4 个赞