MarcP
(MarcP)
1
已为此问题单独开帖。我使用的是 tests-passed 分支,并已重新构建。安全模式下问题依然存在。
(2cb805a683)
匿名化后的错误日志:TypeError: Cannot read property 'categories' of undefined at https://domain - Pastebin.com
复现步骤:当我选择一个分类作为默认关注项并点击绿色按钮时,没有任何反应。红色叉号会撤销操作,绿色对勾则毫无作用(它应该弹出提示询问是否应用到旧用户;在我安装的另一个论坛中该功能正常)。
编辑:标题更清晰了
MarcP
(MarcP)
3
这并非解决方案,也不是问题所在。
更新我的情况:我在新服务器上进行了全新安装,一切正常,我可以毫无问题地启用该设置。但在从生产站点恢复备份后,同样的问题又出现了。我完全摸不着头脑,两天前才刚完成全新安装,不知道哪里出了问题。
如果团队中有人想亲自查看该问题,我可以提供测试站点的管理员登录信息,您可以随意进行检查。
pfaffman
(Jay Pfaffman)
4
你是否曾在另一台主机上执行过导入操作,然后将其恢复到当前服务器?
MarcP
(MarcP)
5
是的。具体来说,我在 stage1.domain.com 上搭建了暂存服务器,执行了初始设置,启用了恢复功能,通过 Web 界面上传了该文件并执行了恢复。
但让我换一种方式提问:/etc/hosts 中的主机名是否必须与 Discourse 的 app.yml 文件中的主机名完全一致?
这与我在 DigitalOcean (DO) 中最初设置的主机名以及该 Droplet 在 DO 中的名称有何关联?
Stephen
(Stephen)
6
不,/etc/hosts 中的主机名无关紧要。如果它很重要,安装指南中会要求您确认。Jay 提供的指南包含了更改域名所需的所有步骤。
MarcP
(MarcP)
7
你们两人都读过这个问题了吗?这与域名变更无关,看到人们随便丢给我一些 URL 真的让人很沮丧。我知道那份指南。为什么大家都在反复提及它?这并不是问题所在,我的网站运行正常,除了那个 bug。
感觉经过两天后,我在这个疯狂的问题上完全被蒙在鼓里。请再读一遍原始帖子。我无法保存默认的“已观看”设置——主机名与此无关且是正确的,所以我再次不需要那份指南。
团队里有人在这里吗?安装它不到 30 分钟确实很棒,但一旦出现问题,我注意到许多论坛帖子都被搁置且未解决。开始觉得自托管这个是个错误。
pfaffman
(Jay Pfaffman)
8
所以,它确实可以工作。
直到你恢复备份之前。
这表明你恢复的数据存在问题。我们曾提出过一个解决方案,但你并未详细说明你是如何创建这些数据的,因此我们的建议可能并不正确。
有的。这是他们的工作,所以他们很可能要等到周一才会在线。
MarcP
(MarcP)
9
你指的是哪个解决方案?目前我已按照指南进行了多次安装,主机名也是正确的。我之前关于/etc/hosts 的建议只是针对一个可能的问题,而现在我已确认这与该问题无关。因此,我们可以确定问题出在我的备份或数据库中。
但我并未进行任何异常操作。我的论坛上线后用户开始注册,我从未动过数据库。这让我完全不知道该如何解决此问题。
你能告诉我需要我提供什么信息才能帮助你解决吗?我已在主题帖(OP)中提供了包含错误日志的 Pastebin 链接。这有帮助吗?
关于我如何创建恢复数据:数据实际上只是一个仅存在两天的全新数据库。
- 在生产站点上创建了备份
- 通过邮件中的 URL 下载了 tar.gz 文件
- 在新的 DigitalOcean Droplet 上搭建了测试环境
- 在设置中允许恢复操作,并通过管理界面执行了恢复。
MarcP
(MarcP)
11
看到这次提交时,我就是这么想的,也抱有这个希望。新搭建的预发布网站确实已经部署了这个新版本,但问题依然存在。
编辑:我的预发布环境实际上还有一个升级——正在安装,稍后汇报结果。
编辑 2:@dax 我可以确认,我已将 stage1 域名更新,但问题依旧。
已安装
2.4.0.beta6
(6f6a02645c)
j.jaffeux
(Joffrey Jaffeux)
12
您方便进行一些调试吗?我无法复现您的错误,而且由于处于生产环境,目前的日志信息还不足以让我定位问题。
您可以尝试以下步骤:
- 打开 Chrome 开发者工具(其他浏览器也可操作,但我对 Chrome 更熟悉)
- 执行导致问题的操作
- 复制堆栈跟踪的第一行,在您的 Pastebin 中它应该类似于:
https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519
- 按 Cmd + Shift + P(Windows 上的按键可能略有不同,但应该类似)
- 确保去掉
> 符号,然后粘贴 https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519,系统应该会找到对应文件,点击它
- 点击左下角的
{} 按钮,应该会显示一些代码,请将这段代码复制粘贴到这里
(另外,https://domain.com/assets/application-1beed43f1604869d65e7d466de8cb9119afcf1cbbc2eae42c98ae8f7a5d0edf9.js:1:2086519 可能在您的控制台中是可点击的,您可以直接点击它,然后按 {} 按钮以美化查看代码)
MarcP
(MarcP)
13
@j.jaffeux 我按照您的步骤操作了,但不幸的是,点击该链接(或搜索它)后,我进入了一个文件,但它是空的:
如果您需要,我可以提供我的预发布环境的详细信息,以便您进行测试。(这是一个在线环境)
j.jaffeux
(Joffrey Jaffeux)
14
好的,如果你也能在测试环境上复现,请通过消息发送详细信息给我。
j.jaffeux
(Joffrey Jaffeux)
15
好的,这个问题出现在以下代码块中:
define("discourse/routes/about", ["exports", "discourse/lib/ajax", "discourse/routes/discourse"], function(e, t, n) {
"use strict";
Object.defineProperty(e, "__esModule", {
value: !0
}),
e.default = n.default.extend({
model: function() {
var o = this;
return (0,
t.ajax)("/about.json").then(function(i) {
var t = []
, n = []
, s = moment().locale("en").utc().subtract(1, "year");
i.about.admins.forEach(function(e) {
moment(e.last_seen_at) > s && t.push(e)
}),
i.about.moderators.forEach(function(e) {
moment(e.last_seen_at) > s && n.push(e)
}),
i.about.admins = t,
i.about.moderators = n;
var e = i.about.category_moderators;
return e && e.length && e.forEach(function(e, t) {
var n = o.site.categories.findBy("id", e.category_id);
i.about.category_moderators[t].category = n
}),
i.about
})
},
titleToken: function() {
return I18n.t("about.simple_title")
},
actions: {
didTransition: function() {
return this.controllerFor("application").set("showFooter", !0),
!0
}
}
})
})
该代码位于源代码中:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/routes/about.js.es6#L25
目前还不确定这个 actions 是如何产生影响的……明天再深入研究。
MarcP
(MarcP)
16
感谢您的调查。请放心,我的论坛除了这个问题外运行正常,并不着急。现在是周日晚上,祝您愉快,也感谢您确认了这个问题。
MarcP
(MarcP)
22
每次提交后我都不断尝试。
我刚刚重新构建了项目,因为我想安装指纹插件。我不知道是你们修复了这个问题,还是有什么魔法发生了?总之……我终于能够保存我的默认监控设置了。谢谢!