markdown-it-bundle 的无效 URL

,

今天更新并启用了 envs 中的 S3_CDN_URL 选项后,除了 markdown-it-bundle 加载外,其他一切都正常。

https://tosdr.community/https://tosdr-community.s3.jrbit.de/assets/markdown-it-bundle-5a633717415fd164893a925e4cac1406ecab8179d15637506b08a147ab543433.br.js

虽然服务器上的资源存在并且已上传,但 discourse 仍然会加上基础 URL 前缀。
所有其他资源都运行正常。

我已经检查了 uploads 表,所有 URL 格式都正确。

还有其他表可以查看吗?或者有直接的修复方法吗?

是否有类似于 remap 的 DbHelper,可以用于在整个数据库中搜索字符串?

1 个赞

您是否遵循了使用 S3 设置 Discourse 的指南?根据这个主题,似乎有很多复杂的步骤需要遵循才能进行设置:

1 个赞

恐怕这并非我的专长,但我找到了一个类似问题的帖子,或许能帮上忙?

2 个赞

@crcoli7307 是的,这正是我所遵循的主题 :slight_smile:


@JammyDodger
谢谢你提供的主题!

所以我把 S3_CDN_URL 改成了:

DISCOURSE_S3_CDN_URL: https://s3.jrbit.de/tosdr-community

但遗憾的是,这破坏了样式表的加载方式。

这会不会是存储桶名称的问题,因为它几乎和域名一样?

存储桶名称:tosdr-community
域名:tosdr.community

看看样式表是如何构建的。

已迁移到新的存储桶:存储桶名称不是问题,同样的问题仍在发生

更新:我刚刚检查了 markdown-it-bundle 的嵌入方式,并通过 rail 控制台执行了 script_asset_path(由于缺少 request.env 变量,需要稍作修改!)

image

根据 script_asset_path,资产 URL 生成正确。仍然不确定为什么会发生这种情况。

编辑:
这似乎是一个已知错误

编辑 2:
我通过最肮脏的解决方法“修复”了它。在 nginx 配置中硬编码资产并重定向它

location ~ markdown-it-bundle-dcd9743077867b3a68d7b723130cb2711dc4c843b018d7bc609f868289402fef.(.*).js {
return 302 https://tosdr-forum.s3.jrbit.de/assets/markdown-it-bundle-dcd9743077867b3a68d7b723130cb2711dc4c843b018d7bc609f868289402fef.$1.js;
}

搞定了,除非资产被更新 :slight_smile:

1 个赞