DiscordJS导入外部Embed字段触发EMBED_FIELD_NAME报错排查
错误诱因
报错由两个叠加的写法问题导致:
- 模块导入取值错误:
fields.js中是将字段数组作为myFields属性挂载到module.exports上导出的,但commandfile.js中直接将require()的返回值整体赋值给myFields,此时myFields是形如{ myFields: [/*字段数组*/] }的导出对象,并非定义的字段数组本身。 addFields传参格式错误:addFields方法接收的参数是展开的字段对象、或字段对象组成的一维数组,但代码在拿到错误导入值的基础上,又额外用方括号把myFields包了一层,传入的实际是嵌套结构的二维数组,库解析字段时读取不到合法的非空字符串类型name属性,就会抛出该错误。
修复方案
按顺序修改两处代码即可:
- 修正模块导入语句,正确取到导出的字段数组,两种写法二选一:
// 写法1:解构导入 const { myFields } = require('../fields'); // 写法2:取导出对象的myFields属性 const myFields = require('../fields').myFields;
- 移除
addFields调用时额外包裹的方括号,直接传入本身就是一维数组的myFields,修正后的完整代码如下:
const { myFields } = require('../fields'); const embedTest = new MessageEmbed() .setColor('#4278f5') .setTitle('__**MY TITLE**__') .setThumbnail('mylink.com') .setDescription(`**something**`) .addFields(myFields) .setFooter({text:`my footer`});
内容的提问来源于stack exchange,提问作者Exiled Pho
相关产品推荐
相关产品推荐

