Discord.js V13升级后MessageEmbed报EMBED_FIELD_VALUE错误如何解决
问题判断结论
你的排查结论完全正确。Discord.js V12版本会隐式将数组类型的Embed字段value自动转换为字符串,但是V13及以上版本收紧了类型校验,明确要求Embed字段的value必须为非空字符串,不再支持自动类型转换,数组传入时会直接触发你遇到的RangeError [EMBED_FIELD_VALUE]报错。
其他可能触发该报错的原因
你也可以额外排查以下场景:
- 传入的
displayText数组中存在undefined/null/空字符串值,模板字符串转换后如果得到空值,会触发非空校验报错 msgSender/displayTime/memberCount这类全局变量如果存在未定义的情况,渲染到Embed标题、页脚或字段名中也可能触发非预期的空值报错
修复方案
只需要将用户数组手动转换为字符串即可,推荐按换行格式拼接方便阅读,修改addFields中三个用户状态的value取值逻辑:
// 原逻辑 value: users1.length !== 0 ? users1 : "-", // 替换为 value: users1.length !== 0 ? users1.join('\n') : "-",
对users2、users3的value取值做相同修改即可解决报错。
内容的提问来源于stack exchange,提问作者KraftaN
相关产品推荐
相关产品推荐

