Cloudflare Rocket Loader 导致未捕获的 ReferenceError: Discourse 未定义

在我的网站的某些主题上,当我在移动设备上打开它们时,JS 控制台中会出现这些错误,

例如,当我在移动设备上打开这个链接时:FAQs For New Content Writers - How To Discuss

如果直接通过添加主题 ID 而不是主题名称 slug 来访问主题,也会出现同样的错误:

在桌面上打开此主题时也会出现同样的错误:

我最近刚刚升级了 Discourse,并在终端中进行了手动重建,但此错误仍然存在。有人能帮我解决吗?

是否有插件导致了这个问题?这是我目前使用的插件:

我的所有插件都已更新到最新版本:

另外,我刚刚测试并确认:如果进入我的网站并搜索主题“FAQ”然后点击它,则不会出现此问题;但如果直接复制该主题的 URL 并在浏览器中直接打开,或点击链接(来自其他外部网站,而非 Discourse 内部),则会出现此错误。

以下是原始错误日志:

1 个赞

您正在使用 Cloudflare Rocket Loader,该功能不受支持。

请登录 Cloudflare 管理面板,找到 Discourse 的 DNS 记录,并将云朵图标设置为灰色。若云朵显示为橙色,Discourse 将随机出现故障,正如您所见。

3 个赞

@Falco 非常感谢你的快速回复。我刚刚将这个 Cloud 设置为灰色,也就是将其设置为仅 DNS,之前是代理状态。

但我仍然看到相同的错误,我想我也应该在 CF 设置中关闭 Rocket Loader。

我已经在设置中关闭了 Rocket Loader。

但是当我刷新该 URL 时,我仍然看到相同的错误::disappointed_face:

根据我的经验,更改生效需要几个小时。

1 个赞

好的,让我看看,所以您是建议我保持云灰模式,并在设置中关闭火箭加载器,对吗?

另外,我注意到我的网站 UI 多次随机出现类似这样的崩溃,并且在控制台中看到此错误:

NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://pagead2.googlesyndication.com/pagead/gen_204?id=puberror&context=165&msg=TagError%3A%20adsbygoogle.push()%20error%3A%20No%20slot%20size%20for%20availableWidth%3D0%0Aat%20Vj%20(https%3A%2F%2Fpagead2.googlesyndication.com%2Fpagead%2Fjs%2Fadsbygoogle.js%3A155%3A453)%0Aat%20Uj%20(adsbygoogle.js%3A154%3A137)%0Aat%20ik%20(adsbygoogle.js%3A162%3A239)%0Aat%20Pk%20(adsbygoogle.js%3A191%3A493)%0Aat%20sl%20(adsbygoogle.js%3A209%3A106)%0Aat%20rl%20(adsbygoogle.js%3A207%3A1123)%0Aat%20Cl%20(adsbygoogle.js%3A222%3A288)%0Aat%20adsbygoogle.js%3A217%3A43%0Aat%20Ce.n.ba%20(adsbygoogle.js%3A68%3A294)%0Aat%20Qe%20(adsbygoogle.js%3A77%3A357)&shv=r20200924&eid=42530672%2C21067492&client=ca-pub-7087907313091932&slotname=5744927958&url=https%3A%2F%2Fhowtodiscuss.com%2Flatest"}]
    at a.makeRequest (https://howtodiscuss.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)

即使我禁用或启用广告拦截器,此错误依然存在。

那个话题之前运行正常,但现在

另外,我现在收到了未加密的错误

我已经将 Cloudflare 重新设置为代理模式,并在设置中关闭了 Rocket Loader,让我们看看效果。

橙色云朵表示在安装过程中未为您的站点获取证书,而其他用户默认会安装该证书。

请阅读并遵循 Set up HTTPS support with Let's Encrypt 以解决此问题。

2 个赞

好的,但我已将其更改为橙色云代理,并在设置中关闭了 Rocket Loader,现在似乎运行正常,谢谢!

另外,请问您有 Nginx 经验吗?我该如何处理带查询参数的重定向?https://stackoverflow.com/questions/64110945/nginx-virtualhost-how-to-redirect-a-discourse-url-with-amp-query-parameter-to