导入 User 类而不是直接使用 User

亲爱的社区成员,大家好,

我有些时间可以修复我们社区中的一些警告。其中之一如下:

弃用通知:请导入 User 类,而不是直接使用 User(自 Discourse 2.4.0 起已弃用,将在 Discourse 2.6.0 中移除)

我尝试通过 DevTools 进行调试,但它不允许我进入发出警告的文件。它显示:

无法加载 URL/assets/var/www/discourse/public/assets/_application-d88a387e24ec4397c59d853355d071080a32aa58498a2ea0a509cebee72839c0.js 的内容:HTTP 状态码:404

无论如何,我进入了安全模式,只保留主题。看起来警告来自我的主题。在我的主题中,我发现我在一个 HTML 文件中使用了以下内容:

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

因此,我的技术问题如下:

  1. 警告是否可能来自这一行?如果是,我应该如何导入 User 并解决该警告?
  2. 我应该如何从 DevTools 调试压缩后的 JS 文件?

提前感谢!:slight_smile:

var currentUser = Discourse.User.current();

更改为

var currentUser = api.getCurrentUser();

6 个赞

不需要像消息中提示的那样导入任何内容吗?

不需要,因为 API 已经为您提供了该功能。

2 个赞

太棒了!非常感谢 :slight_smile:
看来我还需要修复更多地方,比如 Discourse.Site.currentProp('trustLevels')
是否有合适的文档可以阅读,以便了解应该使用哪个方法来替代旧方法?

我也是,我需要把 Discourse.Site.currentProp('user_fields')(参见 此处)替换成别的吗?

1 个赞

我想,这个话题应该属于 Support - Discourse Meta 这个分类。

我遇到了同样的问题:弃用通知:请导入 User 类,而不是直接使用 User(自 Discourse 2.4.0 起已弃用,将在 Discourse 2.6.0 中移除),当前使用的是最新版本 2.6.0.beta3。

我的论坛在首次用户访问时运行缓慢。

您能解释一下我应该从哪里开始吗?如何更改该值?是从管理区域吗?

谢谢

这些弃用通知主要针对主题和插件开发者。

“如果你不知道如何操作,那么你不应该执行此操作。”

3 个赞

作为主题开发者,如果您使用的不仅仅是 User.current(),那么替换方式如下:

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