Discourse 即将把 Ember Javascript 框架版本从 3 升级到 5。绝大多数准备工作已经完成,许多站点(包括 Meta!)已经在运行 Ember 5。![]()
此升级目前可通过功能标志(feature flag)启用!对于自托管的 Discourse 安装,这是从 1 月 10 日开始的默认设置。最初,Ember 3 支持仍可通过标志获得,但将在 2024 年第一季度被移除。
在我们托管的 discourse.org 服务上,我们将在未来几个月内分阶段推出此标志:
| 升级日期 | |
|---|---|
| Basic | 2023-12-07 |
| Free | 2023-12-12 |
| Pro | 2024-01-15 |
| Business | 2024-01-22 |
| Enterprise | (具体情况具体分析) |
这对我以及我的站点意味着什么?
如果您运行的 Discourse 没有额外的自定义主题、插件或主题组件……那么您一切就绪!无需做任何操作,也无需担心。
同样,如果您只使用官方主题/插件,我们已经为您准备好了!我们将确保所有官方主题、主题组件和插件都已准备就绪,以适应此次升级。
对于使用第三方自定义项的用户,其开发者应进行必要的更改,以便您在过渡期间能够无缝使用它们。
但是,如果您拥有自己创建或委托开发的任何自定义主题、主题组件或插件,那么这篇帖子就是为您准备的!我们将介绍如何在升级前识别和解决任何问题。
识别问题
所有与 Ember 5 相关的升级问题都可以通过检查已弃用的 API 的使用情况来提前识别。在 Discourse 的最新版本(从 Discourse 3.2.0.beta4-dev 开始)中,这些关键的弃用将触发管理员的警告横幅:
您可以在浏览器的开发者控制台中找到有关触发的弃用的更多信息。通常,解决所有可见的弃用是一个好习惯。但对于这次 Ember 版本升级,关键需要解决的是:
-
discourse.modal-controllers(请参阅此主题了解更多信息) -
所有 Ember 弃用(即 ID 不包含
-discourse.的弃用)
在控制台中打印弃用信息时,Discourse 会尝试识别相关的主题/插件。
对于开发者和托管提供商,我们提供了一些工具来批量识别弃用:
-
在运行 QUnit 测试时,最后会打印一份报告,列出所有未解决的弃用。在 GitHub Actions 中,此报告的 Markdown 版本会添加到工作流摘要页面。
-
对于托管提供商,我们有 discourse-deprecation-collector 插件,每当生产环境中遇到弃用时,该插件会增加 prometheus 计数器。
解决弃用
通常,控制台消息会包含问题描述以及解决问题所需的步骤。在某些情况下,它们会链接到外部资源,例如 Ember 弃用 网站或 Discourse Meta。
如果任何内容不清楚,请随时在此处或在专门的 Dev 主题下发帖,我们将尽力提供帮助。
在 Ember 5 上进行测试
要在本地开发环境中测试 Ember 5,您可以使用 EMBER_VERSION 环境变量启动我们的 ember-cli 助手。例如:
EMBER_VERSION=5 bin/ember-cli -u
要确认一切正常,请检查 Discourse 在浏览器控制台中打印的 Ember 版本。
在生产环境中,您可以通过将 app.yml 文件 env: 部分的 EMBER_VERSION: 5 来实现相同的功能。




