好了,我已经能够让错误消失并重现它。
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)。