User를 직접 사용하는 대신 User 클래스를 import하세요

안녕하세요, 커뮤니티 여러분,

커뮤니티의 경고 메시지를 수정할 시간이 좀 있습니다. 그중 하나가 다음과 같습니다:

Deprecation notice: Import the User class instead of using User (deprecated since Discourse 2.4.0) (removal in Discourse 2.6.0)

DevTools로 디버깅을 시도해 보았지만, 경고가 발생하는 파일에 진입할 수 없습니다. 다음과 같은 메시지가 표시됩니다:

Could not load content for URL/assets/var/www/discourse/public/assets/_application-d88a387e24ec4397c59d853355d071080a32aa58498a2ea0a509cebee72839c0.js : HTTP status code: 404

어쨌든, 테마만 남긴 채 안전 모드(safe mode)로 진입해 보았습니다. 경고가 제 테마에서 발생하는 것 같습니다. 제 테마의 HTML 파일에서 다음 코드를 사용하고 있는 것을 발견했습니다:

<script type="text/discourse-plugin" version="0.8.13">
api.decorateWidget('header:before', helper => {
  // ... code
  var currentUser = Discourse.User.current();
  // ... code
});
</script>

따라서 기술적인 질문은 다음과 같습니다:

  1. 이 경고가 해당 라인에서 발생하고 있다면, User를 어떻게 import해야 하며 경고를 해결할 수 있을까요?
  2. DevTools에서 압축된 JS 파일을 어떻게 디버깅해야 하나요?

미리 감사합니다! :slight_smile:

`

var currentUser = Discourse.User.current();

을

var currentUser = api.getCurrentUser();

으로 변경하세요

메시지에 나와 있듯이 아무것도 가져올 필요가 없나요?

아니요, API가 이미 그 기능을 제공해 주니까요.

멋지네요! 정말 감사합니다 :slight_smile:
Discourse.Site.currentProp('trustLevels')처럼 수정해야 할 곳이 더 있는 것 같습니다.
구식 메서드 대신 어떤 메서드를 사용해야 하는지 이해할 수 있도록 읽을 수 있는 공식 문서가 있을까요?

저도 마찬가지인데, Discourse.Site.currentProp('user_fields')(여기 참고)를 다른 것으로 대체해야 하나요?

이 주제는 Support - Discourse Meta 카테고리인 지원(Support) 카테고리에 있어야 할 것 같습니다.

저도 최신 버전인 2.6.0.beta3에서 동일한 문제를 겪고 있습니다. Deprecation notice: Import the User class instead of using User (deprecated since Discourse 2.4.0) (removal in Discourse 2.6.0)

제 포럼은 최초 방문자가 접속할 때 느리게 실행됩니다.

어디서부터 시작해야 하는지 설명해 주실 수 있나요? 해당 값을 어떻게 변경해야 하나요? 관리자 영역에서 변경해야 하나요?

감사합니다

이러한 비추천(deprecation) 알림은 테마 및 플러그인 개발자를 대상으로 합니다.

“이 방법을 모른다면, 이 작업을 수행해야 할 사람은 당신이 아닙니다.”

테마 개발자로서 User.current() 외에 다른 것을 사용 중이라면, 대체 코드는 다음과 같습니다:

const User = require('discourse/model/user').default;