无法保存默认关注分类/标签

已为此问题单独开帖。我使用的是 tests-passed 分支,并已重新构建。安全模式下问题依然存在。
(2cb805a683)

匿名化后的错误日志:TypeError: Cannot read property 'categories' of undefined at https://domain - Pastebin.com

复现步骤:当我选择一个分类作为默认关注项并点击绿色按钮时,没有任何反应。红色叉号会撤销操作,绿色对勾则毫无作用(它应该弹出提示询问是否应用到旧用户;在我安装的另一个论坛中该功能正常)。

编辑:标题更清晰了

这并非解决方案,也不是问题所在。

更新我的情况:我在新服务器上进行了全新安装,一切正常,我可以毫无问题地启用该设置。但在从生产站点恢复备份后,同样的问题又出现了。我完全摸不着头脑,两天前才刚完成全新安装,不知道哪里出了问题。

如果团队中有人想亲自查看该问题,我可以提供测试站点的管理员登录信息,您可以随意进行检查。

你是否曾在另一台主机上执行过导入操作,然后将其恢复到当前服务器?

是的。具体来说,我在 stage1.domain.com 上搭建了暂存服务器,执行了初始设置,启用了恢复功能,通过 Web 界面上传了该文件并执行了恢复。

但让我换一种方式提问:/etc/hosts 中的主机名是否必须与 Discourse 的 app.yml 文件中的主机名完全一致?

这与我在 DigitalOcean (DO) 中最初设置的主机名以及该 Droplet 在 DO 中的名称有何关联?

不,/etc/hosts 中的主机名无关紧要。如果它很重要,安装指南中会要求您确认。Jay 提供的指南包含了更改域名所需的所有步骤。

你们两人都读过这个问题了吗?这与域名变更无关,看到人们随便丢给我一些 URL 真的让人很沮丧。我知道那份指南。为什么大家都在反复提及它?这并不是问题所在,我的网站运行正常,除了那个 bug。

感觉经过两天后,我在这个疯狂的问题上完全被蒙在鼓里。请再读一遍原始帖子。我无法保存默认的“已观看”设置——主机名与此无关且是正确的,所以我再次不需要那份指南。

团队里有人在这里吗?安装它不到 30 分钟确实很棒,但一旦出现问题,我注意到许多论坛帖子都被搁置且未解决。开始觉得自托管这个是个错误。

所以,它确实可以工作。

直到你恢复备份之前。

这表明你恢复的数据存在问题。我们曾提出过一个解决方案,但你并未详细说明你是如何创建这些数据的,因此我们的建议可能并不正确。

有的。这是他们的工作,所以他们很可能要等到周一才会在线。

你指的是哪个解决方案?目前我已按照指南进行了多次安装,主机名也是正确的。我之前关于/etc/hosts 的建议只是针对一个可能的问题,而现在我已确认这与该问题无关。因此,我们可以确定问题出在我的备份或数据库中。

但我并未进行任何异常操作。我的论坛上线后用户开始注册,我从未动过数据库。这让我完全不知道该如何解决此问题。

你能告诉我需要我提供什么信息才能帮助你解决吗?我已在主题帖(OP)中提供了包含错误日志的 Pastebin 链接。这有帮助吗?

关于我如何创建恢复数据:数据实际上只是一个仅存在两天的全新数据库。

  1. 在生产站点上创建了备份
  2. 通过邮件中的 URL 下载了 tar.gz 文件
  3. 在新的 DigitalOcean Droplet 上搭建了测试环境
  4. 在设置中允许恢复操作,并通过管理界面执行了恢复。

此问题应已修复,

看到这次提交时,我就是这么想的,也抱有这个希望。新搭建的预发布网站确实已经部署了这个新版本,但问题依然存在。

编辑:我的预发布环境实际上还有一个升级——正在安装,稍后汇报结果。

编辑 2:@dax 我可以确认,我已将 stage1 域名更新,但问题依旧。
已安装
2.4.0.beta6
(6f6a02645c)

您方便进行一些调试吗?我无法复现您的错误,而且由于处于生产环境,目前的日志信息还不足以让我定位问题。

您可以尝试以下步骤:

  • 打开 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 可能在您的控制台中是可点击的,您可以直接点击它,然后按 {} 按钮以美化查看代码)

@j.jaffeux 我按照您的步骤操作了,但不幸的是,点击该链接(或搜索它)后,我进入了一个文件,但它是空的:

如果您需要,我可以提供我的预发布环境的详细信息,以便您进行测试。(这是一个在线环境)

好的,如果你也能在测试环境上复现,请通过消息发送详细信息给我。

好的,这个问题出现在以下代码块中:

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 是如何产生影响的……明天再深入研究。

感谢您的调查。请放心,我的论坛除了这个问题外运行正常,并不着急。现在是周日晚上,祝您愉快,也感谢您确认了这个问题。

问题在 2.4.0beta7 版本中仍然存在。

编辑 2:我刚刚发现,我还无法保存以下设置:

每次提交后我都不断尝试。

我刚刚重新构建了项目,因为我想安装指纹插件。我不知道是你们修复了这个问题,还是有什么魔法发生了?总之……我终于能够保存我的默认监控设置了。谢谢!

已在提交中修复