You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js v13使用数组作为Embed字段值报错,如何复现v12相同效果?

报错根因

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings

该报错是因为Discord.js v13调整了Embed字段的校验规则:v12版本会隐式把传入的value数组自动拼接为换行分隔的字符串,v13及以上版本不再支持数组作为value参数的输入,要求必须传入显式的非空字符串。


解决方法

仅需要把数组手动用join('\n')方法拼接为换行分隔的字符串即可,实现的视觉效果和v12版本完全一致。
修改后的完整代码如下:

const embed = new Discord.MessageEmbed()
        .setTitle("Embed Title")
        .setColor("DC143C")
        .addFields(
            { name: "\u200B", value: "\u200B" },
            { name: "Field 1:", value: `Value`, inline: true },
            { name: "Field 2:", value: `Value`, inline: true },
            { name: "Field 3:", value: `Value`, inline: true },
            { name: "\u200B", value: "\u200B" },
            {
                name: `Column 1`,
                value: ["word", "word", "word", "word", "word"].join('\n'),
                inline: true,
            },
            {
                name: `Column 2`,
                value: ["word", "word", "word", "word", "word"].join('\n'),
                inline: true,
            },
            {
                name: `Column 3`,
                value: ["word", "word", "word", "word", "word"].join('\n'),
                inline: true,
            }
        );

实现效果与v12版本完全一致,参考效果图:
Discord Embed


补充注意事项

如果你的数组存在为空的可能性,拼接后可以加零宽空格兜底,避免触发空字符串报错,示例写法:
value: yourArray.join('\n') || '\u200B'

内容的提问来源于stack exchange,提问作者KraftaN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:45:03