# DiscoTOC 显示我的 TypeError

**URL:** https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100
**Category:** Bug
**Tags:** disco-toc
**Created:** [2024年十二月12日 16:11 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100 "2024-12-12T16:11:06Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Yt.w](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yt.w/32/348367_2.png) [@Yt.w](https://meta.discourse.org/u/Yt.w)
#### Post date: [2024年十二月12日 16:11 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/1 "2024-12-12T16:11:06Z")

</div>

它显示了以下错误。如何修复？

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/4/d/74d4686eb77c2dbf106b7e27b53a3760830b6124.png)

顺便说一句，在主题中添加目录后，我需要刷新页面，否则目录链接将不起作用。这是正常行为吗？

---

<div class="post-metadata">

### Author: ![jancernik](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jancernik/32/275892_2.png) [@jancernik](https://meta.discourse.org/u/jancernik)
#### Post date: [2025年一月6日 19:32 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/5 "2025-01-06T19:32:57Z")

</div>

嘿 @Yt.w，感谢你的报告。我无法重现你提到的问题。你仍然遇到此行为吗？如果是，你能否提供更多关于重现步骤的详细信息？

据我所知，刷新页面以重建 HTML 是符合预期的行为。虽然有可能避免这种情况，但这需要更改组件当前的工作方式。

---

<div class="post-metadata">

### Author: ![Yt.w](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yt.w/32/348367_2.png) [@Yt.w](https://meta.discourse.org/u/Yt.w)
#### Post date: [2025年一月12日 10:40 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/6 "2025-01-12T10:40:59Z")

</div>

您好，我仍然观察到此行为，实际上在我安装当前实例后立即就出现了。我没有做任何更改。

我的另一个实例没有这个问题，所以我感到很困惑。

从用户体验的角度来看，我认为最好避免刷新页面以保持目录（TOC）处于活动状态。

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [2025年二月21日 19:08 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/8 "2025-02-21T19:08:39Z")

</div>

@Yt.w 请在出现此错误时向我展示您的浏览器控制台？请展开错误信息。

---

<div class="post-metadata">

### Author: ![Yt.w](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yt.w/32/348367_2.png) [@Yt.w](https://meta.discourse.org/u/Yt.w)
#### Post date: [2025年二月22日 06:41 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/9 "2025-02-22T06:41:27Z")

</div>

![The image shows a DevTools console window with an error message stating "#<TypeError: no implicit conversion of nil into String>", and a section of the Discourse website with a message about new features related to privacy. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/6/3/7/637b095e1bf68d8ba3b619f338ca11bfcfa38f54.png)  
你好，这是我的控制台显示的内容

 ![The image displays a section of code within a text editor, organizing JavaScript files for a project structure with a highlighted section involving logging output. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/f/6/c/f6c05a041d9771da3864c35da60efa66b436c1ee.png)

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [2025年二月22日 14:59 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/10 "2025-02-22T14:59:03Z")

</div>

我在我托管的三个多站点设置中的一个站点上遇到了完全相同的错误，这让我认为该站点中的某个设置导致了这种情况。我还没有确定是哪个设置，但当我找到它时，我会回来更新帖子，我只想补充一点，我也在最新的测试通过版本中看到了这种情况。

这是我的控制台中的内容，无论好坏，这些都是我习惯看到的东西 🙂

 ![console](https://global.discourse-cdn.com/meta/original/4X/5/9/9/5999d1eca086b563e18d05cf6b6cf6203f7c7caf.png)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2025年二月27日 00:23 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/12 "2025-02-27T00:23:31Z")

</div>

谢谢，我们仍在努力找到确切的重现步骤，我们无法在我们的多站点托管站点上重现此问题。

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [2025年二月28日 22:24 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/13 "2025-02-28T22:24:40Z")

</div>

这可能是一个误导，也可能不是。我还没有足够的时间去深入研究，但当我移除并重新安装该组件时，总是会收到以下错误：

![image](https://cdck-file-uploads-global.s3.dualstack.us-west-2.amazonaws.com/meta/original/4X/b/a/0/ba0bb6ad7e6d93d3193af3da9a02f675057b6314.png)

字段编号会发生变化，我推测是因为每次重新安装组件时，它都被安装为不同的组件编号。我会继续深入研究，但当我用任何其他组件执行相同操作时，都不会出现这种情况。

我目前的怀疑是，失败部分原因是我撤销了我在这个特定站点上进行的一些 S3 更改。@Yt.w，你是否也在你的安装中使用了 S3？

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [2025年三月1日 02:22 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/14 "2025-03-01T02:22:33Z")

</div>

好了，我已经能够让错误消失并重现它。

## TL;DR

- 回退到以前正常工作的S3设置，并删除然后重新安装DiscoTOC组件，结果实现了无错误的组件安装。
- 通过在app.yml中注释掉所有的S3指令来禁用S3，结果在安装组件时错误会重新出现，而且我猜在更新时错误也会再次发生。
- 设置`DISCOURSE_USE_S3: false`并不能阻止Discourse使用S3路径，这感觉像是一个bug，或者这个设置没有我想象中的作用。

## 详细概述

最开始，我是尝试恢复我的minio设置，取消注释我在app.yml中的配置选项，重建应用，确保运行了s3:upload\_assets任务。网站恢复正常后，我导航到组件部分。已安装的DiscoTOC组件仍显示错误，但当我删除它并重新安装时，错误没有再次出现。在安装DiscoTOC组件的过程中，_sprite.svg_ 被请求从我的S3服务器获取。

在尝试重现问题的过程中，我遇到了一个有趣的问题。当我保持所有S3指令在app.yml中都激活，即没有注释掉，但设置了`DISCOURSE_USE_S3: false`时，网站前端在minio未运行时无法加载。

也许`DISCOURSE_USE_S3: false`并不意味着禁用所有S3访问，我是根据名称假设它是这样，但显然不是。一旦我重启了minio服务并刷新前端，一切就正常了。我也能在这种状态下卸载和重新安装DiscoTOC组件而不重现错误。这至少看起来像是一个错误。

这是导致我可重现错误的第三种状态。

为了让我的网站在没有运行minio的情况下正常工作，我注释掉了配置中所有与S3有关的条目。然后重建应用，此时即使没有运行minio，前端也能正常加载。然而，如果我卸载并重新安装DiscoTOC组件，错误又会出现。我也尝试在这种状态下启动minio，但错误在重新安装时再次出现，很可能因为没有在app.yml中设置任何S3指令，即使它试图访问S3，也会使用默认值，而非有效的配置。虽然如此，似乎仍然有一些图片会在post:rebake后尝试从S3加载（例如1531a70abda0d81d1a4039b6f3fa38bea79ef0de\_2\_180x180.png/xl.meta）。

---

<div class="post-metadata">

### Author: ![Yt.w](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/yt.w/32/348367_2.png) [@Yt.w](https://meta.discourse.org/u/Yt.w)
#### Post date: [2025年三月1日 04:42 UTC](https://meta.discourse.org/t/discotoc-showing-me-typeerror/342100/15 "2025-03-01T04:42:48Z")

</div>

是的，出现问题的论坛使用了 S3(B2)，而没有问题的论坛则没有使用 S3。
