Discord.js v12:从外部文件调用嵌入消息颜色遇阻求助
解决Discord.js v12从外部JSON读取Embed颜色失败的问题
核心问题排查与解决方案
1. 相对路径错误(最常见原因)
你当前使用的路径./config/embed.json是相对于命令文件所在目录的。如果命令文件放在子文件夹(比如commands/)里,而config/文件夹在项目根目录,那么路径需要调整为../config/embed.json(向上一级目录再进入config)。
修改后的路径代码:
const color = require('../config/embed.json'); // 修正相对路径
2. 验证JSON文件是否成功读取
可以添加调试输出,确认JSON内容是否被正确加载:
const color = require('./config/embed.json'); console.log(color); // 控制台会输出JSON对象,检查是否包含"blue": "#5865f2"
如果控制台输出undefined或非预期对象,说明路径错误(优先排查)或JSON文件存在语法问题(你的JSON语法是合法的)。
3. 确认颜色格式兼容性
Discord.js v12的MessageEmbed.setColor()完全支持十六进制字符串格式(如#5865f2),你的颜色值本身是合法的。只要路径正确且JSON读取正常,该颜色值就能正常应用。
修正后的完整命令文件示例
假设命令文件位于commands/文件夹,config/在项目根目录:
const Discord = require('discord.js') const color = require('../config/embed.json'); module.exports = { name: "developer", cooldown: 10, aliases: "dev", run: async(client, message, args) => { const dev = new Discord.MessageEmbed() .setColor(color.blue) .setTitle('Example Dev name') .setAuthor(`${message.author.username}`, `${message.author.displayAvatarURL()}`) .setDescription('Hello I am Dev lmao') .setTimestamp() .setFooter('Dev: Developer'); message.channel.send(dev); } };
内容的提问来源于stack exchange,提问作者user19635351
相关产品推荐
相关产品推荐

