Cloudflare Rocket Loader로 인해 Uncaught ReferenceError: Discourse is not defined 발생

제 사이트의 일부 주제에서 모바일 기기로 열면 JS 콘솔에 다음과 같은 오류가 표시됩니다.

예를 들어, 이 주제를 모바일에서 열면 오류가 발생합니다: FAQs For New Content Writers - How To Discuss

주제 이름 슬러그 대신 ID를 직접 추가하여 주제에 접근해도 동일한 오류가 발생합니다:

FAQs For New Content Writers - How To Discuss

데스크톱에서 이 주제를 열어도 동일한 오류가 발생합니다:

최근에 Discourse를 업그레이드하고 터미널에서 수동으로 재빌드도 수행했지만, 여전히 이 오류가 사라지지 않습니다. 이 문제를 해결하는 데 도움을 주실 수 있으신가요?

이 문제를 일으키는 플러그인이 있을까요? 현재 설치된 플러그인은 다음과 같습니다:

모든 플러그인은 최신 상태로 업데이트되어 있습니다.

또한, 직접 테스트해 본 결과 제 사이트에서 이 주제 "FAQ"를 검색하여 클릭하면 오류가 발생하지 않음을 확인했습니다. 하지만 이 주제의 URL을 직접 복사하여 브라우저에서 열거나, 외부 사이트(디스코러스가 아닌 곳)의 링크를 클릭하면 이 오류가 발생합니다.

RAW 오류 로그는 다음과 같습니다:

CodePile | Easily Share Piles of Code

Cloudflare Rocket Loader를 사용 중인데, 이는 지원되지 않습니다.

Cloudflare 관리 패널에서 Discourse의 DNS 항목으로 이동하여 클라우드를 회색으로 변경하세요. 아래에서 볼 수 있듯이, 주황색 클라우드로 설정하면 Discourse가 무작위로 실패합니다.

@Falco 빠른 답변 감사합니다. 방금 이 Cloud를 회색으로 변경했는데, 이는 DNS only로 설정했다는 뜻입니다. 이전에는 프록시 상태였거든요.

하지만 여전히 같은 오류가 보입니다. CF 설정에서 로켓 로더(Rocket Loader)도 끄는 것이 좋겠다는 생각이 듭니다.

설정에서 로켓 로더도 껐습니다.

하지만 해당 URL을 새로고침해도 여전히 같은 오류가 나네요 :frowning:

제 경험상 변경 사항이 적용되는 데 몇 시간이 걸립니다.

음, 한번 살펴볼게요. 클라우드 그레이를 그대로 두고 설정에서 로켓 로더도 끄라는 말씀이시죠?

그리고 가끔 사이트 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)

애드블로커를 끄거나 켜도 이 에러는 사라지지 않아요.

그 주제는 이제 정상적으로 작동하고 있습니다.

또한, 현재 보안되지 않은 오류가 발생하고 있습니다.

클라우드를 다시 프록시 모드로 되돌렸고 설정에서 로켓 로더를 끄기로 했습니다. 결과를 지켜보겠습니다.

주황색 구름은 설치 과정에서 사이트에 대한 인증서를 발급받지 못했음을 의미합니다. 다른 모든 사용자에게는 기본적으로 이 인증서가 설치됩니다.

해결하려면 Set up HTTPS support with Let's Encrypt 을 읽고 지시 사항을 따르세요.

알겠습니다. 그런데 저는 설정에서 오렌지 클라우드 프록시(orange cloud proxied)로 변경하고 로켓 로더(Rocket Loader)를 꺼두었는데, 이제 잘 작동하는 것 같습니다. 감사합니다!

또한, Nginx에 대한 경험이 있으시다면, 쿼리 파라미터를 포함한 리다이렉트(https://stackoverflow.com/questions/64110945/nginx-virtualhost-how-to-redirect-a-discourse-url-with-amp-query-parameter-to)를 어떻게 설정해야 하는지 조언을 구할 수 있을까요?