bdfl
(Bryan)
2025 年10 月 27 日 22:03
1
在最新稳定版本中,当我点击 /u/user_name/invited/pending 处的“创建邀请链接”按钮时,我看到一个 JavaScript 错误。
控制台显示:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘slice’)
at h.shortKey (chunk.f105ceace2ad381ddb2f.d41d8cd9.js:241:61588)
如果邀请对象在 invite_key 从服务器填充之前被渲染,那么 invite_key 将是 undefined,并在使用 .slice() 时因操作空值而崩溃。
在 invite.js 中,shortKey 函数尝试缩短邀请密钥:
shortKey(key) {
return key.slice(0, 4) + "…";
}
我无法在 meta 上重现它,所以也许是因为我的服务器或网络不够快。但是,在使用 .slice() 之前检查密钥是否存在似乎可以解决此问题:
return key ? key.slice(0, 4) + "…" : "";
sam
(Sam Saffron)
2025 年10 月 28 日 04:44
3
邀请密钥不可为空:
这是在迭代 model.invites:
我查看了代码,不确定部分填充的代码来自哪里,即使我在网络上添加了 400 毫秒的延迟,我也无法重现。
我认为我们需要在修补之前进行某种重现,该修补将允许人们复制一个损坏的邀请链接。
bdfl
(Bryan)
2025 年10 月 28 日 14:02
4
感谢您对此进行调查并指出这一点。
将延迟放在 before_create 应该可以解决问题。
我已将其更新为:
{{else}}
{{icon "link"}}
+ {{#if invite.invite_key}}
{{i18n
"user.invited.invited_via_link"
key=invite.shortKey
count=invite.redemption_count
max=invite.max_redemptions_allowed
}}
+ {{else}}
+ <em>正在生成链接...</em>
+ {{/if}}
{{/if}}
sam
(Sam Saffron)
2025 年10 月 28 日 22:33
5
我认为只要进行本地化,这作为公关就没问题。
仍然对我们在哪里用一个半满的对象填充 Invite 感到有些困惑,但这比失败要好,而且在我看来是正确的。
david
(David Taylor)
2025 年10 月 29 日 09:41
7
我在 Meta 上看到这个错误了吗?我想知道它是否已在 latest 中修复。如果是这样,我们只需要确定修复它的提交,然后将其反向移植到稳定版。
bdfl
(Bryan)
2025 年10 月 29 日 15:26
8
save() 后,在 invite_key 从服务器填充之前,邀请已立即添加到列表中。它仍然存在于 latest 中,因此我打开了 PR #35679
1 个赞