Discord.js斜杠命令报错:Cannot access 'DurationFormatter' before initialization
问题根因
你的代码第3行存在两处逻辑错误,直接触发了报错:
- 未提前导入
DurationFormatter类就直接尝试实例化 - 错误使用解构赋值接收类实例的返回值,导致变量初始化顺序异常
修复步骤
- 先安装对应的依赖包(如果尚未安装):
npm install @discordjs/formatters
- 修改头部的导入和初始化代码:
将原代码第3行:
const { DurationFormatter } = new DurationFormatter();
替换为:
// 先从依赖包导入DurationFormatter类 const { DurationFormatter } = require("@discordjs/formatters"); // 实例化 formatter 工具 const durationFormatter = new DurationFormatter();
- 修改run方法内的调用逻辑,将:
const duration = DurationFormatter.format(client.uptime);
替换为:
const duration = durationFormatter.format(client.uptime);
修正后完整代码
const { version } = require("discord.js"); const { codeBlock } = require("@discordjs/builders"); const { DurationFormatter } = require("@discordjs/formatters"); const durationFormatter = new DurationFormatter(); exports.run = async (client, interaction) => { const duration = durationFormatter.format(client.uptime); const stats = codeBlock("asciidoc", `= STATISTICS = • Men Usage :: ${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} • Uptime :: ${duration} • Users :: ${client.guilds.cache.map(g => g.memberCount).reduce((a, b) => a + b).toLocaleString()} • Servers :: ${client.guilds.cache.size.toLocaleString()} • Channels :: ${client.channels.cache.size.toLocaleString()} • Discord.js :: v${version} • Node :: ${process.version}`); await interaction.reply(stats); }; exports.commandData = { name: "stats", description: "Show's the bots stats", options: [], defaultPermissions: true, }; exports.guildOnly = false;
内容的提问来源于stack exchange,提问作者Emiluvik
相关产品推荐
相关产品推荐

