에셋 업로드 미완료로 인해 색상 로딩 도트 표시

Safe mode의 모든 항목을 체크해도 도움이 되지 않습니다.

docker manager를 제외한 모든 app.yml 플러그인을 제거했습니다.

이 문제를 어떻게 해결해 볼 수 있을까요?

재구축 앱 로그에서도 명확한 원인을 찾지 못하겠습니다.

사이트가 로딩 중이어서 멈춰 있다는 말씀이신가요?

브라우저 콘솔을 확인해 보시고, 보시는 내용을 복사해서 붙여넣거나 스크린샷을 찍어 주세요. (페이지에서 마우스 오른쪽 버튼을 클릭 → 검사 → 콘솔 탭 클릭)

콘솔에서 확인되는 내용은 다음과 같습니다:

Uncaught ReferenceError: define is not defined
    at apply-details.js:1:1
composer-presence-display.js:1 Uncaught ReferenceError: define is not defined
    at composer-presence-display.js:1:1
console.js:1 Uncaught ReferenceError: define is not defined
    at console.js:1:1
spoiler-alert.js:1 Uncaught ReferenceError: define is not defined
    at spoiler-alert.js:1:1
admin?v=b7ce39c01f13a2dce7d327b15c700163:1 Uncaught ReferenceError: I18n is not defined
    at admin?v=b7ce39c01f13a2dce7d327b15c700163:1:1
wizard?v=3f01c1ba4ca92c6d988a708eb22fa69a:1 Uncaught ReferenceError: I18n is not defined
    at wizard?v=3f01c1ba4ca92c6d988a708eb22fa69a:1:1

관리자 패널에서 업그레이드한 건가요?

그렇다면 커맨드 라인에서 Discourse를 다시 빌드해 보고 도움이 되는지 확인해 볼 수 있을까요?
가끔 이런 일이 발생하기도 합니다. 컨테이너를 완전히 다시 빌드해야 할 수 있습니다. :thinking:

여러 가지를 시도해 보았습니다:

명령줄에서 ./launcher rebuild app을 실행해 보았고,

서버도 재부팅했습니다.

모든 플러그인을 주석 처리하거나 app.yml 파일에서 docker-manager를 제외한 모든 항목을 비활성화한 상태로 rebuild app을 시도해 보았습니다.

앱을 재빌드할 때 로그에 간헐적으로 redis가 "포트가 이미 사용 중"이라는 메시지와 함께 표시되는 것이 유일한 이상한 점입니다.

재빌드 로그에서도 이것을 확인합니다:
경고: Resolution 필드 "unset-value@2.0.1"이 요청된 버전 "unset-value@^1.0.0"과 호환되지 않습니다

아래 경고들도 마찬가지입니다:

warning "@discourse/lint-configs > eslint-plugin-ember > ember-eslint-parser@0.3.8" has unmet peer dependency "@typescript-eslint/parser@^6.15.0".
warning " > @glint/environment-ember-loose@1.4.0" has unmet peer dependency "@glimmer/component@^1.1.2".
warning " > discourse-markdown-it@1.0.0" has unmet peer dependency "xss@*".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > discourse-plugins > ember-this-fallback@0.4.0" has unmet peer dependency "ember-source@^3.28.11 || ^4.0.0".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > admin > ember-source > router_js@8.0.3" has unmet peer dependency "rsvp@^4.8.5".
warning "workspace-aggregator-dea9e772-66c3-4abc-b8ac-f93229bc0b9d > discourse > @uppy/aws-s3 > @uppy/xhr-upload@3.3.0" has incorrect peer dependency "@uppy/core@^3.2.1".

그 경고들은 무시해도 됩니다. 우리가 놓친 부분이 있을 수 있으니, 주저하지 말고 전체 로그를 여기에 붙여넣어 주세요.

또한, Cloudflare나 유사한 서비스를 사용하고 계신가요?

Digital Ocean 드롭렛에 S3 버킷의 최신 이미지로 설정되어 있습니다.

이런 ^^^ 오류는 무엇 때문에 발생하나요?

확실하지 않습니다. 우리가 보고 있는 현상은 근본적인 문제(초기 단계의 치명적 오류나 특정 항목이 제대로 로드되지 않은 경우 등)의 결과라고 생각합니다. 혹시 다른 분들이 이에 대한 통찰을 나눠주셨으면 좋겠습니다. :thinking:

Discourse URL을 공유해 주실 수 있을까요? (편하신 경우 개인 메시지로 보내셔도 됩니다.)

DM을 보냈어요, @Arkshine.

오해했습니다. S3를 이미지용으로만 사용할 줄 알았어요!

S3 버킷 내 파일에 대해 권한 문제(또는 오래된 캐시?)가 있는 것 같습니다. 일부 JavaScript 파일이 차단되고(403 Forbidden) 있어 Discourse를 로드할 수 없습니다.

불행히도 S3에 대해 많이 알고 있지는 않지만, 적어도 문제의 원인이 어디에서 비롯되는지는 아실 거예요. 누군가가 곧 도움을 주실 수 있기를 바랍니다!

다시 생각해 보니, 다른 누군가가 문제를 발견할 수 있도록 URL을 공유하는 데에는 아무런 위험이 없습니다.

로그는 주저했는데, S3 액세스 키가 몇 개 보였고, 로그 안에 다른 사적인 정보가 들어 있을지 확신이 서지 않았기 때문입니다.

S3 호환 객체 저장소 제공자를 업로드용으로 구성하기를 따라하셨다면, 에셋을 S3에 업로드하는 부분을 포함하셨나요?

고마워요, 확인해 보고 있어요…

after_assets_precompile 섹션은 무언가 실패해서 주석 처리해 두었었거든요.

다시 활성화해서 어떤 문제인지 확인해 볼게요.

해야 할 일은 다음과 같은 것입니다:

./launcher enter app
rake s3:i_cannot_remember_the_name

그리고 어떤 오류가 발생하는지 확인해 보세요.

하지만 해당 명령이 없다면, 에셋이 S3에 없는 것이므로 로드할 수 없고, 사이트도 정상적으로 작동할 수 없습니다.

그냥 제거하는 것이 아니라, 왜 실패하는지 원인을 파악해야 합니다.

고맙습니다, 여러분은 진짜 전설입니다!

한 달 전에 업로드를 S3로 전환했을 때, 에셋 부분이 작동하지 않았습니다. 이미지 자체는 저장되었지만요.

결국 에셋을 위한 rake 작업을 app.yml로 복사할 때 's’를 하나 빠뜨린 것이었습니다.

그리고 금요일에 업그레이드를 시도했을 때 실패했는데, 이는 일부만 전환된 상태였고, 업그레이드가 되지 않은 오래된 로컬 에셋을 사용 중이었기 때문인 것 같습니다.

이제 아직 처리되지 않은 게시물을 다시 처리(rebake)하고 있으며, 사이트는 다시 정상적으로 작동하고 있습니다.