piffy
9월 2, 2025, 10:10오전
1
방금 이 버전으로 업데이트했습니다: Commits · discourse/discourse · GitHub 2f398db9b66f19220b5a7f56721a68f41dcdeeec
서로 다른 테마 컴포넌트 두 가지가 제 사이트를 완전히 망가뜨립니다. 해당 컴포넌트는 Air Theme 의 "Modern Category + Group Boxes"와 Avatar Size and Shape 입니다.
사이트가 사용 불가능한 상태가 됩니다(루프가 발생하는 것 같습니다). Firefox와 Chrome(데스크톱) 모두에서 발생합니다.
플러그인 없이, 그리고 다른 테마에서 단독으로(예: 플러그인 없이 안전 모드 및 격리된 테마) 시도해 보았기 때문에 제 인스턴스 특유의 문제라고 생각하지 않습니다.
콘솔에는 다음과 같은 줄이 보고됩니다:
Uncaught TypeError: Cannot read properties of null (reading ‘syscall’)
Uncaught (in promise) TypeError: Invalid value used as weak map key
message-bus.js:118 MESSAGE BUS FAIL: callback /latest caused exception TypeError: Cannot read properties of null (reading ‘syscall’)
임시 해결책으로, 문제가 해결될 때까지 사용자들을 일반 테마로 강제 적용했습니다. 이 오류를 재현할 수 있는지 알려주시면 감사하겠습니다.
4개의 좋아요
Don
9월 2, 2025, 11:41오전
3
저도 제 사이트에서 동일한 문제를 겪고 있습니다. 예를 들어 로그아웃을 시도하면 동일한 오류와 함께 페이지가 완전히 흰색으로 변합니다. 일부 사용자들은 페이지가 하얗게 비어 있어서 로그인조차 할 수 없다고 보고했습니다. 이 문제는 무작위로 발생하는 것 같습니다.
가장 큰 문제는 원인을 파악할 수 있는 명확한 오류 메시지가 없다는 것입니다. 제 테마 컴포넌트를 확인하며 원인을 추적해 보았습니다. 대부분의 컴포넌트를 이미 gjs로 업데이트했지만, 흥미로운 점은 특정 컴포넌트를 비활성화했다가 다시 활성화하면 오류 없이 사이트가 정상적으로 작동하기 시작한다는 것입니다. 아직 이 문제의 원인을 정확히 알지는 못하지만… 문제 페이지에는 (사용자 정의) 테마 컴포넌트가 존재하는 것 같습니다. 따라서 문제가 해당 컴포넌트 중 하나에서 비롯되고 있음을 시사하는 단서 정도는 얻었습니다.
1개의 좋아요
이것이 원인을 파악하는 데 도움이 될 수 있습니다:
Thank you. This really helps with the developer experience.
Which as we know has improved dramatically with.gjs over widgets.
however
There are lots of very odd errors you can get when using gjs components that do not make finding the issues very easy.
For example, lets mess up the helper name:
{{html_safe this.bannerTextContent}}
Leads to the classic:
program.js:100 Uncaught (in promise) TypeError: Invalid value used as weak map key at WeakMap.set (<anonymous>)
(this also happens…
헬퍼를 확인해 보세요!
j.jaffeux
(Joffrey Jaffeux)
9월 2, 2025, 12:50오후
5
@Don @piffy , 어디서 일어나고 있는지 페이지나 사이트를 공유해 줄 수 있어?
1개의 좋아요
piffy
9월 2, 2025, 5:18오후
6
아바타 컴포넌트만 포함된 간단한 테마를 설정해 보았습니다: Elite Fourum - E4 - efour
https://www.elitefourum.com/latest?safe_mode=no_plugins&preview_theme_id=39
이 링크에서 Firefox와 Chrome(데스크톱)으로 문제를 재현할 수 있습니다.
Modern Category + Group Boxes: Elite Fourum - E4 - efour
https://www.elitefourum.com/?safe_mode=no_plugins&preview_theme_id=58
이것은 재현하기가 더 어려운 것 같습니다. 관리자 계정으로 로그인한 상태에서는 문제가 발생하지만(Chrome 및 Firefox), 더미 계정으로 시도할 때는 문제가 없습니다. 두 테마 컴포넌트 간의 버그가 유사해 보이므로, 하나를 수정하면 다른 것도 해결될 수 있을 것 같습니다.
도움이 되길 바랍니다!
1개의 좋아요
piffy
9월 2, 2025, 5:23오후
7
해석 가능한 에러 메시지로 얻을 수 있었던 가장 가까운 결과는 다음과 같습니다.
client-error-handler.js:125 [THEME 39 ‘Test’] Error: Could not find module admin/components/color-input imported from (require)
customize-edit-category-general.js는 Air 테마에서 가져와집니다:
import { cancel } from "@ember/runloop";
import { withPluginApi } from "discourse/lib/plugin-api";
export default {
name: "customize-edit-category-general",
initialize() {
withPluginApi("0.8.14", (api) => {
api.modifyClass("component:edit-category-general", {
pluginId: "discourse-air",
didInsertElement() {
this._super(...arguments);
document.body.classList.add("edit-category");
this._focusCategoryName();
코어에서는:
import categoryBadge from "discourse/helpers/category-badge";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
import lazyHash from "discourse/helpers/lazy-hash";
import {
CATEGORY_STYLE_TYPES,
CATEGORY_TEXT_COLORS,
} from "discourse/lib/constants";
import getURL from "discourse/lib/get-url";
import Category from "discourse/models/category";
import { i18n } from "discourse-i18n";
import ColorInput from "admin/components/color-input";
import CategoryChooser from "select-kit/components/category-chooser";
import ColorPicker from "./color-picker";
export default class EditCategoryGeneral extends Component {
@service site;
@service siteSettings;
uncategorizedSiteSettingLink = getURL(
"/admin/site_settings/category/all_results?filter=allow_uncategorized_topics"
);
david
(David Taylor)
9월 2, 2025, 6:14오후
9
이 변경 사항은 air 테마의 color-input 오류를 수정합니다. 하지만 이 문제는 이미 알려진 문제이므로, 이러한 렌더링 오류의 원인이 될 가능성은 낮다고 생각합니다.
main ← optional-require-color-input
merged 06:34PM - 02 Sep 25 UTC
This import will fail for non-admin users. Most of the time this isn't causing a… problem, since `edit-category-general` isn't imported by non-admin logic. However, if a theme imports or calls `modifyClass` on it, this import will be evaluated and fail.
This was affecting an initializer in the discourse-air theme for non-admin users. However, the automatic error recovery for theme initializers caught it, so the only impact was a console log.
2개의 좋아요
david
(David Taylor)
9월 2, 2025, 6:56오후
10
@piffy 혹시 color-input 수정이 도움이 될지 모르겠으니, 최신 tests-passed로 업데이트를 시도해 주실 수 있을까요?
재빌드 후에도 문제가 여전히 발생한다면, 다음을 시도해 주세요:
./launcher enter app
rails c
Discourse.clear_all_theme_cache!
@don 님도 시간이 되시면 같은 방법으로 시도해 주세요.
이 방법으로 문제가 해결된다면, 테마 캐시 무효화(theme cache invalidation)에 문제가 있다는 뜻이 됩니다.
2개의 좋아요
Don
9월 2, 2025, 7:23오후
11
데이비드, 감사합니다. 저에게는 이 방법으로 잘 되는 것 같습니다.
1개의 좋아요
piffy
9월 2, 2025, 7:29오후
12
업데이트를 확인해도 도움이 되지 않았지만, 테마 캐시 재설정은 효과가 있었습니다.
2개의 좋아요
david
(David Taylor)
9월 2, 2025, 7:31오후
13
좋아요, 확인해 주셔서 감사합니다! 수동 작업이 필요 없도록 테마 캐싱 시스템에서 이 문제를 해결해 보겠습니다.
하지만 그 동안 이 문제를 겪고 계신 분들을 위해:
Uncaught TypeError: Cannot read properties of null (reading ‘syscall’)
Uncaught (in promise) TypeError: Invalid value used as weak map key
콘솔에서 다음 단계를 수행해 주세요:
./launcher enter app
rails c
Discourse.clear_all_theme_cache!
4개의 좋아요
david
(David Taylor)
9월 2, 2025, 7:45오후
14
@piffy @Don 두 분 다 단일 컨테이너 표준 설치로 실행 중이신가요?
1개의 좋아요
Don
9월 2, 2025, 7:49오후
15
david:
싱글 컨테이너 표준 설치 를 사용 중이신가요?
네, 저는 싱글 컨테이너 표준 설치를 사용하고 있습니다.
1개의 좋아요
piffy
9월 2, 2025, 7:53오후
16
DigitalOcean에서 단일 컨테이너로 Ubuntu 20.04.6 LTS를 실행 중입니다(더 이상 공식적으로 지원되지 않는다는 점을 인지하고 있습니다).
표준 설치에서 벗어난 주요 사항:
1개의 좋아요
david
(David Taylor)
9월 2, 2025, 8:02오후
17
한 가지 더 여쭤볼게요. 처음에 문제가 생겼을 때, UI 업데이트를 실행 중이었나요, 아니면 CLI 재빌드를 하고 있었나요?
piffy
9월 2, 2025, 8:04오후
18
관리자 UI
20자 게시글 제한을 넘기려고 더 많은 단어를 추가합니다
1개의 좋아요
david
(David Taylor)
9월 2, 2025, 9:07오후
20
문제를 재현하지는 못했지만, UI 기반 업그레이드 방식에 고유한 하나의 가능한 문제를 발견했습니다. 이 문제는 다음과 같이 해결해야 합니다:
main ← ember-version-cache
merged 09:29PM - 02 Sep 25 UTC
During in-container updates, the old version of the application continues runnin… g while an update is applied. That means that it's possible for the `node_modules/ember-source` version to be different to the version currently loaded in the transpiler. That means it's theoretically possible for theme assets to be built with the old compiler, and then stored against the new version.
This commit removes that race condition by adding an `ember_version` method to the JS transpiler. This is guaranteed to give us an accurate version number for the template-compiler currently being used for themes.
This commit also bumps the BASE_COMPILER_VERSION to force a recompile on any sites affected by this race condition.
이것은 재컴파일도 강제하므로, 이미 이 버그의 영향을 받은 사이트는 다음 업데이트 후 정상화됩니다.
5개의 좋아요