# Discourse 主题中的版本列表无效

**URL:** https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855
**Category:** Self-hosting
**Created:** [2026年七月17日 03:37 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855 "2026-07-17T03:37:28Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2026年七月17日 03:37 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/1 "2026-07-17T03:37:28Z")

</div>

我在升级时发现了这些。嗯，这已经有一段时间了，但这次我记录了日志。

```plaintext
[db:default] 'Messages section for sidebar' - checking...
/tmp/discourse_theme_c64ff70a4cc7d614d9e88b106805c78f 中的版本列表无效

[db:default] 'Unhide composer fullscreen toggle for tablets' - checking...
/tmp/discourse_theme_4f18f6036fb93a7e2c8eca368c66ad09 中的版本列表无效

[db:default] 'Discourse Highlight to Search' - checking...
/tmp/discourse_theme_f7e393183be5f0189adb336c4602f071 中的版本列表无效

[db:default] 'Discourse Wikipedia Lookup' - checking...
/tmp/discourse_theme_8cf76b5d4fe5eac70cd636ee2487be35 中的版本列表无效

[db:default] 'Accent' - checking...
/tmp/discourse_theme_9796e5491667b1c43c7b9c680fc68ff3 中的版本列表无效

```

我是否应该担心？

---

<div class="post-metadata">

### Author: ![elmuerte](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/elmuerte/32/456517_2.png) [@elmuerte](https://meta.discourse.org/u/elmuerte)
#### Post date: [2026年七月17日 08:38 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/2 "2026-07-17T08:38:59Z")

</div>

不完全是，但也许可以这么说。

出现该错误的原因有很多。最常见的原因可能是 `.discourse-compatibility` 文件为空 [[1]](https://github.com/moin-Jana/sidebar-messages-section/blob/main/.discourse-compatibility)，[[2]](https://github.com/moin-Jana/unhide-composer-fullscreen-toggle-for-tablets/blob/main/.discourse-compatibility)，[[3]](https://github.com/NateDhaliwal/discourse-highlight-to-search/blob/main/.discourse-compatibility)。（开头的 `#` 是注释行）

实际上，该警告意味着 Discourse 无法确定当前组件/插件的“最新”版本是否与当前的 Discourse 版本兼容，或者是否需要检出该组件/插件的旧版本。

组件/插件的 `.discourse-compatibility` 文件可以包含 Discourse 版本范围与组件/插件特定修订版之间的映射。如果 Discourse 找到映射，它将使用该修订版而不是最新版本。这就要求开发者在做出与先前 Discourse 版本不兼容的更改时更新该文件。只要您没有做出破坏性更改，该文件就会保持为空，从而产生该警告消息。

组件/插件是否与 Discourse 的最新版本兼容始终只是一个猜测。

我开始为 2026.1 开发一个插件，因此这将是 Discourse 的最低版本。它仍在针对该版本（以及当前最新版本）进行开发和测试。由于没有较旧的支持版 Discourse 版本，`.discourse-compatibility` 文件为空；因此产生了此警告消息。一旦 2026.1 停止支持，我将转向新的 ESR（扩展支持版本）。到那时，我将不再针对 2026.1 进行测试，因此我会更新 `.discourse-compatibility` 文件，使其最终非空。只有那时，我的插件才会不再显示此警告。

有关此 .discourse-compatibility 文件的更多信息：[Introducing .discourse-compatibility: pinned plugin/theme versions for older Discourse versions](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971)

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2026年七月17日 09:15 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/3 "2026-07-17T09:15:42Z")

</div>

我试了一下。我 fork 了 `Discourse Wikipedia Lookup` 组件，并在其中添加了 `.discourse-compatibility` 文件。我从另一个组件复制了内容。那个警告消失了。所以确实就是这个问题。

谢谢。

但我查看了几个其他 TC，它们要么完全缺少 `.discourse-compatibility`，要么完全为空。然而，它们并没有给出警告。

不过问题已经解决了，生活还得继续。

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [2026年七月17日 09:22 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/4 "2026-07-17T09:22:01Z")

</div>

从另一个组件的兼容性文件中复制内容可能会导致错误，因为为特定 Discourse 版本引用的提交在您复制到的存储库中不存在。

我知道我的存储库中的兼容性分支工作流失败了，因为我尚未添加 Arkshine 在主题骨架中引入的修复。我认为您列表中的我的两个存储库目前都受到了该问题的影响。

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [2026年七月17日 09:26 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/5 "2026-07-17T09:26:15Z")

</div>

这将停止记录仅包含注释的文件的警告：

> <https://github.com/discourse/discourse/pull/41804>

`.discourse-compatibility` 仍然受支持，尽管我们现在建议遵循基于 `d-compat/*` 分支的主题/插件兼容性策略。更多详情见此处：

> [@为旧版 Discourse 安装锁定插件和主题版本（d-compat 分支）](https://meta.discourse.org/t/272665):
>
> open_book 背景 主题和插件开发者通常希望针对 Discourse 的 latest 版本进行开发，而无需担心向后兼容性。但运行旧版 Discourse 的网站仍然需要能够正常工作的主题/插件版本。 为了弥合这一差距，可以告知 Discourse 检出主题/插件的旧版“固定”版本。有两种机制可实现此目的，按以下顺序检查： 主题/插件仓库中的 d-compat/\<YYYY\>.\<M\> Git 分支（主要方法——推荐用于所有新固定版本）。 仓库根目录中的 .discourse-compatibility YAML 文件（原始机制，仍作为后备方案支持）。 如果两者都存在，则分支优先。 herb d-compat/\<YYYY\>.\<M\> 分支系统 Discourse 发布使用基于日期的版本号，如 2025.5、2025.6 等。当 Discourse 从 Git 更新插件或主题时，它会询问仓库：「您是否有与我版本匹配的名为 d-compat/\<YYYY\>.\<M\> 的分支？」（例如，针对 Discourse 2025.5.x，分支名为 d-compat/2025.5）。如果…

因此，如果您的文件中没有任何实际条目，建议将其删除。

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [2026年七月17日 09:26 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/6 "2026-07-17T09:26:20Z")

</div>

当然。我并没有实际使用那个分支的计划。那只是为了确认问题原因是否在于模板/样板文件而进行的一次测试。我只是想确保使用实际的提交记录和正确的语法。

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2026年八月16日 09:26 UTC](https://meta.discourse.org/t/invalid-version-list-in-discourse-themes/407855/7 "2026-08-16T09:26:54Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
