Recent Discourse 更新以奇怪的方式破坏了插件出口

在过去一周左右,Discourse 的一项更改破坏了我的插件,我无法弄清楚到底是什么问题或如何修复它。该插件已正常运行多年,直到现在。

该插件执行各种操作,但在此处似乎相关的一个操作是在用户个人资料页面上添加一个按钮。

现在,当我访问任何用户的该页面时,大部分页面都无法渲染(包括我的插件旨在添加的按钮):

(如果我通过其“设置”按钮禁用该插件,页面将正常渲染。)

每次刷新此页面时,Chrome 中的 Javascript 控制台都会显示以下异常和堆栈跟踪:

我不确定如何解释该错误,因为它不是我的代码,并且 t(它“不是一个函数”)不在异常声称的行或其附近。这很令人困惑。但我不是 JS 专家,所以也许我在这里遗漏了什么。

通过 Chrome 调试器逐步调试,问题发生在处理我的插件模板的那一行,但我无法确定实际原因,也无法确定是我需要更改/更新的内容还是 Discourse 本身的错误。

我认为相关的插件 JS 代码和 HBS 模板位于我的 user-profile-primary 连接器中,可以在此处找到:

我不确定,但似乎这些最近的 Discourse 提交可能有关联:

任何建议都将不胜感激!

您好 @LeoDavidson - 感谢您提出这个问题。您几乎可以肯定它是与那些提交相关的 - 我会深入研究并尝试弄清楚发生了什么变化。我无意引入任何行为上的改变。

但在此期间,此 PR 应能通过将您的插件连接器移至更常见的目录布局来解决该问题:

10 个赞

非常感谢!感谢您的PR和如此迅速的响应。我刚刚应用了它,现在一切看起来都很好!

4 个赞

我已经研究了导致这种行为变化的原因。连接器位于此处:

assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.js
assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.hbs

路径中多余的 /user/ 意味着它没有被我们的 unColocateConnectors 逻辑检测到。

我在 all-the-pluginsall-the-themes 中搜索过,没有发现其他地方有这种目录布局。所以,除非收到更多问题报告,否则我暂时将保持现状。

4 个赞

此主题在 554 天后自动关闭。不再允许回复。