비공개 인스턴스에서 가입 모달/팝업이 표시되지 않음

안녕하세요!

2.4.0.beta1에서 2.4.0.beta2, 그리고 2.4.0.beta4로 업그레이드하는 과정에서(정확히 어느 업그레이드 단계에서였는지는 불분명) 신규 사용자를 위한 가입 모달이 더 이상 표시되지 않는 문제가 발생했습니다.

저희는 사용자 인증을 위해 OpenID Connect 플러그인을 사용하고 있습니다. 로그인은 필수로 설정되어 있고, 로컬 로그인은 비활성화되어 있으며, 신규 가입은 허용되어 있습니다. 로그인 필수 설정을 해제하거나 로컬 로그인을 활성화하면 문제가 '해결’되어 사용자가 다시 가입할 수 있습니다. 하지만 로컬 로그인은 비활성화된 상태로 유지해야 하고, 로그인도 필수로 유지하고 싶습니다.
OIDC 로그는 정상적으로 Fetched userinfo response와 신규 사용자의 자격 증명이 표시되지만, 모달은 나타나지 않습니다. 새 설치 환경으로 이관하고 백업을 복원해 보았지만 문제가 계속됩니다. 백업을 복원하지 않으면 모달이 정상적으로 표시되므로, 백업 파일에 이 문제를 유발하는 무언가가 있는 것 같습니다. :confused:

현재 사용 중인 Discourse 버전은 2.4.0.beta6이며, 이 버전에서도 동일한 문제가 발생합니다.

사이트에 테마 컴포넌트가 설치되어 있나요? 안전 모드에서도 문제가 지속됩니까?

정말 훌륭합니다, 맞으셨네요! 테마에서 Knowledge Base 컴포넌트를 제거하니 모달이 다시 표시되었습니다. 분명히 업그레이드 중 하나 사이에 해당 컴포넌트를 설치한 것이었네요.

이상하게도, 이는 백업을 복원한 후에만 발생하는 문제입니다. 클린 설치에서는 해당 컴포넌트를 활성화해도 이런 문제가 나타나지 않습니다. 어차피 사용하지 않고 있었으므로 그냥 비활성화하겠습니다.

도와주셔서 감사합니다!

정말 특이한데요. 해당 컴포넌트와 관련해 브라우저 개발자 콘솔에서 특정 에러를 본 기억이 있으신가요?

실제로 https://<HOST>/logs에서 다음 내용을 확인했습니다: Uncaught TypeError: Cannot read property 'knowledge-base' of undefined

또한, Knowledge Base 컴포넌트에 대한 언급은 없으나 TypeError: E.idMap(...) is undefined 오류가 8회 발생했습니다. 해당 오류의 스택 트레이스는 다음과 같습니다 (URL: https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js, 라인: 9, 컬럼: 20924, 윈도우 위치: https://<HOST>/login):

findById@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:20924
findByIds/<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:21063
findByIds@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:9:21035
initialize/</<@https://<HOST>/theme-javascripts/ce296772003fb6162b99b62bf564066966940cc8.js?__ws=<HOST>:103:48
value/<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:14:5447
C@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:6:19799
trigger@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:9:20668
s/</<@https://<HOST>/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js:13:31963
y</t.invoke@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:9739
y</t.flush@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:8732
b</t.flush@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:10782
H</n._end@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:15440
H</n.end@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:12110
H</n._runExpiredTimers@https://<HOST>/assets/ember_jquery-7dfac344d893a6c10c016353b994db2c6f42af630322ea6da3399c220fcc50ed.js:16:16800

이것이 발생할 수 있는 원인에 대해 몇 가지 생각이 있습니다.

다만 궁금한 점이 있습니다 – 활성화되어 있을 때 kb categories 테마 설정에 카테고리가 나열되어 있었나요? 카테고리가 선택되지 않은 경우 코드의 특정 부분에서 문제가 발생할 수 있는 사례를 확인할 수 있습니다.

수정: 문제를 처리할 수 있을 것으로 생각되는 수정 사항을 적용했습니다.

실제로 카테고리가 하나도 나열되어 있지 않았습니다. 하지만 카테고리를 선택한 후에도 모달이 표시되지 않습니다.
관련이 있을 수도 있고, 완전히 별개의 문제일 수도 있지만: 카테고리가 표시되는 동안 default to kb view 설정이 아무런 효과가 없으며, KB 뷰를 활성화하려면 KB 버튼과 Latest 버튼을 번갈아 가며 클릭해야 합니다.

수정: 컴포넌트를 업데이트한 후, 이제 다음과 같이 동작합니다: 카테고리 목록이 비어 있으면 모달이 표시됩니다 :tada:. 그러나 카테고리를 선택하면 모달이 다시 표시되지 않습니다.

로그에서 동일한 오류를 확인하고 계신가요?

여기서 일어나고 있는 일은, 로드되기 전에 지식 기반(knowledge base) 컴포넌트를 찾으려는 라우트가 트리거되고 있다는 것입니다.

네, 하지만 더 이상 쌓이지는 않고, 백트레이스의 4번째 줄에서 차이가 납니다. 다른 줄들은 위에서와 같이 보입니다.

initialize/</<@https://<HOST>/theme-javascripts/<VARIES>.js?__ws=<HOST>:103:48

초기화되지 않은 항목을 조회하려는 시도를 중단하기 위해 몇 가지 추가 검사를 포함하는 커밋을 추가했습니다.

차이가 없어요. TypeError가 계속 발생하고 있습니다.

해당 커밋에서 그 특정 오류 메시지를 수정할 수 있었습니다. 모달 문제까지 해결되었는지 확실하지는 않지만, 관련이 있는 것 같습니다.

나쁘지 않네요, 카테고리 선택 시에도 이제 모달이 표시됩니다! :confetti_ball: