업데이트 후 빈 웹사이트

안녕하세요,

Discourse 포럼을 방금 업데이트했는데 이제 화면이 텅 비어 있습니다(홈페이지와 관리자 페이지 모두). HTML은 정상적으로 보이고 RSS도 작동합니다.

테마로 인해 발생한 JS 오류를 발견했습니다. 문제가 여기서 비롯된 것일 수 있을까요?
Capture d’écran 2020-08-22 à 15.57.03

이를 어떻게 수정할 수 있을까요? CLI에서 테마의 JS 코드를 수정하거나 비활성화할 수 있나요? 새로운 테마를 설치할 수 있나요?

수정: 다른 테마가 설치되어 있지 않아 ?preview_theme_id=를 사용할 수 없습니다.

안녕하세요 @CamilleRoux

직접 DB 쿼리에 익숙하시다면, SQL을 사용하여 DB에서 기본 테마를 직접 변경할 수도 있습니다.

도움이 되셨길 바랍니다.

Discourse 안전 모드 사용법을 시도해 보셨나요?

무엇을 하고 계신가요 :thinking: ?

  • 안전 모드 확인: https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • 로그 https://forum.humancoders.com/logs (비공개인가요?)

SHH를 통해 다음을 실행해 보세요:

cd /var/discourse
git pull
./launcher rebuild app

안전 모드가 작동하지 않습니다… 동일한 오류가 발생합니다:

ReferenceError: Discourse is not defined
    at https://forum.humancoders.com/assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1:1

이미 ./launcher rebuild app으로 재빌드했습니다.

다른 테마가 설치되어 있지 않아서, CLI로 새 테마를 설치하거나 기존 테마를 수정해야 합니다. 어떻게 해야 하는지 모르겠습니다.

아, 기본 테마에 깨진 부분이 있어서 비활성화할 방법이 없다는 건가요? 만약 그게 사실이라면, 왜 커스터마이징을 항상 테마 컴포넌트에 넣으라고 조언했는지 이해가 되실 거예요 (물론 지금은 그걸 말씀드리기 좋은 타이밍은 아니지만요!). (다만, 정확히 그런 상황인지는 확신은 없습니다).

그리고 서드파티 플러그인은 전혀 없으신 건가요?

아마 해야 할 일은 rails 콘솔에서 새로운 빈 테마를 만들고, 기본 테마를 그 새 테마로 변경하는 것일 겁니다. 하지만 어떻게 해야 하는지는 바로 떠오르지 않네요.

문제가 테마에서 비롯된 건지 아직 완전히 확신은 없어요.
하지만 만약 그런 경우라면, 빈 테마를 만들어 기본값으로 설정하면 문제가 해결될 수 있어요. 어떻게 해야 하는지는 모르겠네요 :frowning:

저도 마찬가지입니다. :man_shrugging:

저도 마찬가지입니다. 방법을 찾아낼 수는 있을 것 같지만, 주말에 하지 않으려 노력 중인 유료 작업이 산더미처럼 쌓여 있어서요.

Hi @CamilleRoux

저희가 대신 확인해 보았습니다. 개발자 콘솔에서 UA 문자열을 Google bot으로 설정하면 Ember SPA 없이 Rails만 표시되는 사이트를 볼 수 있습니다.

Rails 관점에서 사이트 상태가 "OK"임을 확인할 수 있으므로, 이는 컨테이너가 정상적으로 실행되고 있다는 뜻이며, 추측하신 대로 테마(컴포넌트)에 JavaScript 문제가 있는 것으로 보입니다.

첨부 파일 확인해 주세요:

@CamilleRoux

psql 프롬프트에 접속하시거나 (편하신 대로 rails 콘솔을 사용하셔도 됩니다) 다음 쿼리를 실행해 주시겠어요?

설치된 테마가 몇 개인지 확인해 보겠습니다:

discourse=# select count(*) from themes;
 count 
-------
    22
(1 row)

현재 기본 테마 ID가 무엇인지 확인해 보겠습니다:

discourse=# select value from site_settings where name = 'default_theme_id';
 value 
-------
 3
(1 row)

이것도 함께 실행해 주실 수 있나요?

discourse=# select id, name, component, enabled from themes;
 id |           name            | component | enabled 
----+---------------------------+-----------+---------
  3 | Light                     | f         | t
  6 | Minima                    | f         | t
  7 | Hamburger Theme Selector  | t         | t
  2 | Material Dark             | f         | t
  8 | Vincent                   | f         | t
  5 | Material                  | f         | t
  9 | Simple                    | f         | t
 10 | Graceful Wide             | f         | t
 11 | Dark Wide                 | f         | t
 14 | Alien Night               | f         | t
 39 | md-composer-extras-neo    | t         | t
 40 | Plugin Outlets            | t         | f
 15 | User Card Directory       | t         | f
 41 | Raw Post Button           | t         | t
  4 | Graceful                  | f         | t
  1 | Dark for GSE              | f         | t
 42 | Dark                      | f         | t
 43 | discourse gifs            | t         | t
 44 | Cookie Consent Banner     | t         | t
 46 | Graceful Edits            | t         | t
 45 | Neo Stuff Scratch Sheets  | t         | t
 48 | Unformatted Code Detector | t         | t

참고로,

@CamilleRoux

방금 당신을 위해 이걸 테스트해 봤습니다.

위에 올린 게시글의 쿼리를 실행하여 모든 테마를 나열한 후(현재 테마 상태에 대한 기록이 있다고 가정하고), rails 또는 psql에서 데이터베이스에 접근하여 이 쿼리를 실행할 수 있다면 다음을 시도해 볼 수 있습니다:

모든 테마 구성 요소 비활성화 쿼리

discourse=#  update themes set enabled = false where component = true;

위 쿼리는 모든 테마 구성 요소를 끕니다.

그런 다음 깨진 사이트를 접근하려고 할 때 "무슨 일이 일어나는지"를 확인할 수 있습니다.

만약 내가 지금 당신의 상황이라면, 봇 UA로 사이트를 확인한 결과에 기반하여 모든 테마 구성 요소를 끌 것입니다.

실제로, 나는 직접 SQL DB 쿼리에 익숙하고 경험이 있으므로, 네비게이션 링크와 관련된 테마 구성 요소(아래 JS 에러 참고, 시작점으로)부터 하나씩 끄겠습니다. SQL 기술에 자신감이 있으신가요?

만약 이 작업에 익숙하지 않다면, 나에게 메시지를 보내 접근 권한을 주면 이 “그다지 좋은 상황이 아닌” 문제를 해결하는 데 도움을 드리겠습니다. 현재 제가 가진 정보에 기반하여, 다시 정상적으로 작동하게 만드는 데 도움을 줄 수 있을 것이라고 꽤 확신합니다 :slight_smile:

JS 에러도 확인하세요:
Discourse.ExternalNavItem=Discourse.NavItem.extend({href:function(){return this.get('href');}.property('href')});I18n.translations.fr.js.filters.formations={title:"Formations",help:"Formations pour développeur·se·s"};Discourse.NavItem.reopenClass({buildList:function(category,args){var list=this._super(category,args);list.push(Discourse.ExternalNavItem.create({href:'https://www.humancoders.com/',name:'formations'}));return list;}});jQuery(function($){$(document).on("ready",function(){if(Cookies.get('hcFirstPage')==undefined){$(document).on('click','.toggle-menu',function(e){e.preventDefault();$('.main-nav').toggleClass('show');});var tweenBounce=TweenMax.to('#topbar',1.2,{maxHeight:"50px",delay:2,ease:Power1.easeInOut});var tweenBounceBack=TweenMax.to('#topbar',1.2,{maxHeight:"4px",delay:5.5,ease:Power1.easeInOut});Cookies.set('hcFirstPage',true,{expires:.04});}else{var tweenBounce=TweenMax.to('#topbar',0);}
window.addEventListener('unload',function(){Cookies.remove('hcFirstPage');});var tweenOpen,tweenClose;$('.topbar-toggle').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('.topbar-toggle').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('#topbar').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});});});

네, falks님 도움을 주셔서 감사합니다.
오래된 설치 환경이었고 다른 테마/컴포넌트가 설치되어 있지 않았습니다. 그래서 테마를 변경하거나 모든 컴포넌트를 비활성화할 수 없었습니다.
그래서 이전 백업으로 복원한 후 테마를 업데이트하고, 그 다음 Discourse를 업데이트했습니다. 상황이 나아졌지만, 여전히 오류가 하나 남아 있습니다(이전에는 2개였음).

오류 내용은 다음과 같습니다:

Uncaught ReferenceError: Discourse is not defined
<anonymous> /assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1

해당 파일의 내용은 다음과 같습니다:

Discourse.start();

기본 테마의 오래된 버전을 사용하고 있는 건가요? (현재 테마는 2016년에 기본 테마에 CSS와 JS를 추가하여 생성되었습니다)

참고: Discourse를 업데이트하지 않은 백업을 사용 중이므로 웹사이트가 다시 실행되고 있습니다.

그렇다면 저는 새 범용 테마를 만들고 기본값으로 설정한 후, 업그레이드를 수행하고 테마를 수정하는 방법을 추천합니다.

소소한 업데이트: Discourse의 일부 버전에서는 버그가 발생하지만, 모든 버전에서는 아닙니다.
stable과 tests-passed에서는 정상적으로 작동하지만, beta에서는 작동하지 않습니다. 따라서 버그는 이미 수정되었지만 beta에 커밋되지 않았다고 인정합니다.

문제가 테마 커스터마이징에서 발생하는 건가요, 아니면 기본 테마에서 발생하는 건가요?

현재 베타 버전에서는 테마와 관계없이 동일한 버그가 발생합니다.