在版本更新后,我发现无法通过点击用户头像加载用户卡片,进入个人信息设置时,提示页面无法找到。
我昨天进行了更新,用户卡片加载正常。
请检查安全模式。如果没有问题,那么可能是你的主题或主题组件存在问题?
请提供任何控制台错误信息。
我处于安全模式,仍然无法加载,这是我的日志信息
在异常应用中处理异常时失败 : ActiveRecord::StatementInvalid : PG::UndefinedTable : 错误:关系 "gamification_leaderboard_cache_1_all_time" 不存在 LINE 1: ...p.t
ActiveRecord::StatementInvalid (PG::UndefinedTable : 错误:关系 "gamification_leaderboard_cache_1_all_time" 不存在 LINE 1: ...p.total_score, p.position FROM "users" INNER JOIN gamificati.
这可能会有影响,但我指的是浏览器日志,你能分享那些吗?
即浏览器控制台。(通常通过F12打开)
topic-creator-avatar.hbr:1 [THEME 300 '最新主题摘要'] Compile error: unknown file extension 'hbr' (discourse/connectors/topic-list-before-columns/topic-creator-avatar.hbr)
(匿名) @ topic-creator-avatar.hbr:1
[新] 使用 Edge 中的 Copilot 来解释控制台错误: 单击
以说明错误。
了解更多信息
不再显示
composer-action-title.js:62 ℹ️ Discourse v3.5.0.beta5-dev — https://github.com/discourse/discourse/commits/7820dd2b8f — Ember v5.12.0
post-placeholder.js:53 [PLUGIN discourse-chain-topics] Deprecation notice: Defining connector classes via registerConnectorClass is deprecated. See https://meta.discourse.org/t/32727 for more modern patterns. [deprecation id: discourse.register-connector-class-legacy]
o @ post-placeholder.js:53
p @ topic-link.js:12
registerConnectorClass @ group.js:15
(匿名) @ topic-custom-field-initializer.js:32
e1 @ group.js:15
initialize @ topic-custom-field-initializer.js:13
(匿名) @ composer-action-title.js:62
(匿名) @ item.js:166
e.each @ form-template-validation.js:54
e.walk @ form-template-validation.js:54
e.each @ form-template-validation.js:54
e.topsort @ form-template-validation.js:54
_runInitializer @ item.js:166
runInstanceInitializers @ item.js:166
_bootSync @ composer-action-title.js:62
didBecomeReady @ index.js:93
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
f @ bookmark.js:114
waitForDOMReady @ index.js:93
init @ index.js:93
_ @ caret-position.js:86
create @ caret-position.js:86
(匿名) @ start-app.js:4
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
post-placeholder.js:53 [PLUGIN discourse-chain-topics] Deprecation notice: Defining connector classes via registerConnectorClass is deprecated. See https://meta.discourse.org/t/32727 for more modern patterns. [deprecation id: discourse.register-connector-class-legacy]
o @ post-placeholder.js:53
p @ topic-link.js:12
registerConnectorClass @ group.js:15
(匿名) @ topic-custom-field-initializer.js:83
e1 @ group.js:15
initialize @ topic-custom-field-initializer.js:13
(匿名) @ composer-action-title.js:62
(匿名) @ item.js:166
e.each @ form-template-validation.js:54
e.walk @ form-template-validation.js:54
e.each @ form-template-validation.js:54
e.topsort @ form-template-validation.js:54
_runInitializer @ item.js:166
runInstanceInitializers @ item.js:166
_bootSync @ composer-action-title.js:62
didBecomeReady @ index.js:93
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
f @ bookmark.js:114
waitForDOMReady @ index.js:93
init @ index.js:93
_ @ caret-position.js:86
create @ caret-position.js:86
(匿名) @ start-app.js:4
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
post-placeholder.js:53 [PLUGIN discourse-chain-topics] Deprecation notice: Defining connector classes via registerConnectorClass is deprecated. See https://meta.discourse.org/t/32727 for more modern patterns. [deprecation id: discourse.register-connector-class-legacy]
o @ post-placeholder.js:53
p @ topic-link.js:12
registerConnectorClass @ group.js:15
(匿名) @ topic-custom-field-initializer.js:141
e1 @ group.js:15
initialize @ topic-custom-field-initializer.js:13
(匿名) @ composer-action-title.js:62
(匿名) @ item.js:166
e.each @ form-template-validation.js:54
e.walk @ form-template-validation.js:54
e.each @ form-template-validation.js:54
e.topsort @ form-template-validation.js:54
_runInitializer @ item.js:166
runInstanceInitializers @ item.js:166
_bootSync @ composer-action-title.js:62
didBecomeReady @ index.js:93
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
f @ bookmark.js:114
waitForDOMReady @ index.js:93
init @ index.js:93
_ @ caret-position.js:86
create @ caret-position.js:86
(匿名) @ start-app.js:4
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
discourse-home-page.js:79 discourse-home-page error: invalid path ""
s @ discourse-home-page.js:79
initialize @ discourse-home-page.js:42
(匿名) @ composer-action-title.js:62
(匿名) @ item.js:166
e.each @ form-template-validation.js:54
e.walk @ form-template-validation.js:54
e.each @ form-template-validation.js:54
e.topsort @ form-template-validation.js:54
_runInitializer @ item.js:166
runInstanceInitializers @ item.js:166
_bootSync @ composer-action-title.js:62
didBecomeReady @ index.js:93
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
f @ bookmark.js:114
waitForDOMReady @ index.js:93
init @ index.js:93
_ @ caret-position.js:86
create @ caret-position.js:86
(匿名) @ start-app.js:4
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
one-version.js:10 DEPRECATION: Components with separately resolved templates are deprecated. Migrate to either co-located js/ts + hbs files or to gjs/gts. Tried to lookup 'template:components/sidebar-theme-toggle'. [deprecation id: component-template-resolving] This will be removed in ember-source 6.0.0. See https://deprecations.emberjs.com/id/component-template-resolving for more details.
(匿名) @ one-version.js:10
(匿名) @ base.js:71
(匿名) @ deprecate.js:100
(匿名) @ base.js:71
(匿名) @ deprecate.js:100
(匿名) @ base.js:71
l @ index.js:49
(匿名) @ render-tags.js:60
(匿名) @ base.js:71
u @ index.js:49
(匿名) @ base.js:71
(匿名) @ base.js:71
(匿名) @ base.js:71
(匿名) @ bookmark.js:114
(匿名) @ base.js:71
(匿名) @ form-template-validation.js:54
(匿名) @ base.js:71
s @ post-placeholder.js:53
(匿名) @ base.js:71
r @ base.js:71
c @ deprecate.js:100
k @ upload.js:65
h @ binary.js:7
(匿名) @ theme-setting.js:6
(匿名) @ theme-setting.js:6
lookupComponent @ theme-setting.js:6
(匿名) @ theme-setting.js:6
A @ theme-setting.js:6
o @ theme-setting.js:6
(匿名) @ theme-setting.js:6
compile @ theme-setting.js:6
ef @ theme-setting.js:6
(匿名) @ theme-setting.js:6
compile @ theme-setting.js:6
compile @ backup-codes.js:33
(匿名) @ backup-codes.js:33
evaluate @ backup-codes.js:33
evaluateSyscall @ backup-codes.js:33
evaluateInner @ backup-codes.js:33
evaluateOuter @ backup-codes.js:33
next @ backup-codes.js:33
_execute @ backup-codes.js:33
execute @ backup-codes.js:33
sync @ backup-codes.js:33
(匿名) @ theme-setting.js:6
(匿名) @ theme-setting.js:6
tA @ backup-codes.js:33
_renderRoots @ theme-setting.js:6
_renderRootsTransaction @ theme-setting.js:6
_renderRoot @ theme-setting.js:6
_appendDefinition @ theme-setting.js:6
appendOutletView @ theme-setting.js:6
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
f @ bookmark.js:114
waitForDOMReady @ index.js:93
init @ index.js:93
_ @ caret-position.js:86
create @ caret-position.js:86
(匿名) @ start-app.js:4
(匿名) @ discourse-boot.js:13
(匿名) @ discourse-boot.js:1
includes.js?v=116e2a6fd81c286e004e2a0afb03baa1:840
GET https://www.tometo.me/u/shen_hualuo/card.json 500 (Internal Server Error)
(匿名) @ includes.js?v=116e2a6fd81c286e004e2a0afb03baa1:840
send @ jquery.js:7408
ajax @ jquery.js:7408
a @ base.js:71
(匿名) @ named-references.js:49
e @ named-references.js:49
A @ base.js:71
(匿名) @ moment.js:257
(匿名) @ group.js:15
(匿名) @ named-references.js:49
e @ named-references.js:49
getAndRemove @ group.js:15
findDetails @ moment.js:257
findByUsername @ moment.js:257
_showCallback @ item.js:166
(匿名) @ topic-link.js:12
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
end @ client-error-handler.js:88
_runExpiredTimers @ client-error-handler.js:88
setTimeout
setTimeout @ client-error-handler.js:88
_installTimerTimeout @ client-error-handler.js:88
_reinstallTimerTimeout @ client-error-handler.js:88
_later @ client-error-handler.js:88
later @ client-error-handler.js:88
T @ bookmark.js:114
_show @ topic-link.js:12
_showCardOnClick @ topic-link.js:12
_cardClickHandler @ topic-link.js:12
_run @ client-error-handler.js:88
_join @ client-error-handler.js:88
join @ client-error-handler.js:88
p @ bookmark.js:114
(匿名) @ bookmark.js:114
includes.js?v=116e2a…04e2a0afb03baa1:840
GET https://www.tometo.me/u/shen_hualuo.json 500 (Internal Server Error)
(匿名) @ includes.js?v=116e2a…04e2a0afb03baa1:840
send @ jquery.js:7408
ajax @ jquery.js:7408
a @ base.js:71
(匿名) @ named-references.js:49
e @ named-references.js:49
A @ base.js:71
(匿名) @ moment.js:257
(匿名) @ group.js:15
(匿名) @ named-references.js:49
e @ named-references.js:49
getAndRemove @ group.js:15
findDetails @ moment.js:257
afterModel @ post-placeholder.js:53
runAfterModelHook @ topic-link.js:12
(匿名) @ topic-link.js:12
k @ named-references.js:49
w @ named-references.js:49
invoke @ client-error-handler.js:88
flush @ client-error-handler.js:88
flush @ client-error-handler.js:88
_end @ client-error-handler.js:88
(匿名) @ client-error-handler.js:88
Promise.then
(匿名) @ client-error-handler.js:88
flush @ bookmark.js:114
_scheduleAutorun @ client-error-handler.js:88
_ensureInstance @ client-error-handler.js:88
schedule @ client-error-handler.js:88
(匿名) @ hashtag-autocomplete.js:158
T @ named-references.js:49
resolve @ topic-link.js:12
T @ form-template-validation.js:54
getTransitionByIntent @ topic-link.js:12
transitionByIntent @ topic-link.js:12
doTransition @ topic-link.js:12
transitionTo @ topic-link.js:12
_doTransition @ upload.js:65
transitionTo @ binary.js:7
(匿名) @ theme-setting.js:6
l @ UIPlugin.js:138
click
所以我相信你并没有处于安全模式。
这个组件似乎引起了问题:
topic-creator-avatar.hbr:1 [主题 300 '最新主题摘要'] 编译错误:未知的文件扩展名 'hbr' (discourse/connectors/topic-list-before-columns/topic-creator-avatar.hbr)
(匿名) @ topic-creator-avatar.hbr:1
这是因为 hbr(原始)模板不再被支持。
请联系该主题的作者进行反馈。
@manuel 你也遇到过这个问题吗?
看起来这些是相关的。
看起来 Gamification 正在修改用户数据并引发错误。
这几乎肯定解释了为什么用户卡片无法加载。
在我看来,您有多个问题,并且这些问题与插件有关,而不是与核心 Discourse 有关。
我建议移除:
- Gamification 插件
- 导致其他浏览器错误的任何主题组件([THEME 300 ‘最新主题摘要’])(需要重写以避免使用 .hbr 模板)
直到您可以解决这些问题。
建议在 Gamification 主题 上报告 Gamification 错误。
因为它是一个#official插件,你也可以在#bug类别报告一个bug(但请记住添加#gamification标签)。![]()
这是真的。
无论如何,这个话题现在涉及两个问题,它们可能应该拆分成两个。
用户卡片无法加载很可能是一个游戏化(Gamification)问题,所以也许用这个问题来处理那个。已添加#gamification标签。
(好吧,这让人很困惑,主题元编辑界面已经改变!)
是的。
![]()
那是我尝试安装备份时发生的。在删除备份中的排行榜之前,访问用户卡片和用户页面都失败了。
编辑:另外,我的截图似乎没有在灯箱中打开?上传的宽度是 1693px,但只显示 690px。
这似乎非常专制。我想知道是否有更轻量的解决方案?
这看起来可能有关联:
是的,很奇怪,原始链接 here 供想真正看清它的人使用 ![]()
可能有关。这次迁移删除了以 _x 结尾的版本化缓存视图(其中 x 是一个数字)。但它遗漏的表是一个未版本化的表(没有 _x)。
@sheng_hualuo 你能从 rails 控制台运行这个吗?
DiscourseGamification::LeaderboardCachedView.regenerate_all
gamification_leaderboard_cache_1_all_time 不是版本 1 吗?
我认为由于某种原因,命名约定已更改。
不,那是排行榜ID。所有细节都在你提到的提交的提交信息中进行了说明。
另外,查看正则表达式 'gamification_leaderboard_cache_[0-9]+_[a-zA-Z_]+_[1-9]$'
啊,全部都开始变得有道理了。所以那个有版本的版本(呃)被删除了,但出于某种原因,新的版本(呃)还没有实现。
我没有完整的跟踪信息,但我认为错误发生在用户卡片的 gamification_score 序列化过程中。
考虑到这些物化视图的瞬态性质,分数查找不应导致系统范围的错误,当视图不存在时,它应该回退到“默认分数”。
物化视图 存在性检查 中存在一个错误。它报告视图存在,但实际上并不存在(至少不在当前的 public schema 中),这导致在查找不存在的视图时出错。
我认为发生这种情况的原因是,在恢复过程中创建的 backup schema 中存在物化视图,但在 public schema 中不存在。backup schema 在恢复后会保留一段时间。
我已经准备了一个包含修复程序的 PR。