[管理员通知] 您的某个主题或插件包含需要更新的代码。(id:discourse.html-safe-helper)

我们一直在收到警告 [subject],我不清楚它来自哪里。

控制台中有一个类似的错误:

DEPRECATION NOTICE: 来自 ‘discourse/helpers/html-safe’ 的 `htmlSafe` 已弃用。请改用来自 ‘@ember/template’ 的 `trustHTML`。[自 Discourse 2026.3.0 起弃用] [弃用 ID: discourse.html-safe-helper]

我在插件和主题文件夹中搜索了 “htmlSafe”;唯一包含它的活动插件是 “docker_manager”,我认为我已经禁用了它(删除了 plugins/docker_manager,并移除了 config/official_plugins.json 中的相关条目)。

但仍然收到错误。我还应该在哪里查找?

应该会有一个指向导致错误的主题组件的链接。Discourse_docker 并不是问题所在。

我不太明白你在说什么;主题存储在数据库中,而不是文件系统里,所以你无法通过那种方式搜索它们。如果你分享你的论坛 URL(且该论坛不需要登录即可访问),应该会有人能够帮助你找到它。

我认为没有这样的链接。由于 @rbos 之前的一则帖子,我查看了 https://forum.pkp.sfu.ca/,并在浏览器控制台中注意到以下内容:

80b72542d6.css:1  Failed to load resource: the server responded with a status of 403 ()
deprecated.js:54 [THEME 14 'Versatile Banner'] DEPRECATION NOTICE: The file 'theme-14/discourse/components/versatile-banner-column.hbs' uses the deprecated .hbs extension. Refactor it to use '.gjs' instead. [deprecation id: discourse.hbs-extension] [info: https://meta.discourse.org/t/398896]
deprecated @ deprecated.js:54
deprecated.js:54 [THEME 14 'Versatile Banner'] DEPRECATION NOTICE: The file 'theme-14/discourse/components/versatile-banner.hbs' uses the deprecated .hbs extension. Refactor it to use '.gjs' instead. [deprecation id: discourse.hbs-extension] [info: https://meta.discourse.org/t/398896]
deprecated @ deprecated.js:54
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
app.js:367 ℹ️ Discourse v2026.8.0-latest.1 — https://github.com/discourse/discourse/commits/7df32723f1 — Ember v6.10.1
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
80b72542d6.css:1  Failed to load resource: the server responded with a status of 403 ()
Node cannot be found in the current page.

我无法找到关于哪个组件导致此消息的详细信息。不过,从 versatile banner 开始排查可能是一个好主意。

我想这不是一个链接,但意思很清楚。我觉得你只需要获取最新版本就行了。

你能告诉我为什么这是显而易见的吗?我清楚地看到它导致了 hbs 文件的弃用提示。但我并没有看到任何指标表明它会触发关于 html-safe 的提示。虽然一个过时的组件似乎也可能导致其他提示,但我们怎么知道没有其他组件在引起那个提示呢?

奇怪。在 Docker 容器中的 Discourse 文件夹里执行 find 命令,并没有找到 “theme-14” 目录。我不知道它到底是从哪里被加载进来的。我当然看到了那些弃用警告,但其中只有上面提到的那一条涉及 “html-safe”。

它竟然存储在数据库里,这确实很有意思,谢谢。我对 Discourse 并不太熟悉,之前一直以为主题文件是存放在文件系统里的。

这种软件我一年也就碰上一次,甚至更少。:slight_smile:

(话说清楚一点,我非常感激 Discourse 一直以来(基本上)坚如磐石的稳定性!正因为我变得这么不熟悉它,反而证明了你们的工作做得出色。我越是熟悉的软件,往往就越容易让我生气!)

更新:我进入论坛管理后台,搜索“versatile”后找到了该组件,并在那里完成了更新,之后提示信息就消失了。

感谢大家的帮助。