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

Discord.js斜杠命令报错:Cannot access 'DurationFormatter' before initialization

问题根因

你的代码第3行存在两处逻辑错误,直接触发了报错:

  1. 未提前导入DurationFormatter类就直接尝试实例化
  2. 错误使用解构赋值接收类实例的返回值,导致变量初始化顺序异常

修复步骤

  1. 先安装对应的依赖包(如果尚未安装):
npm install @discordjs/formatters
  1. 修改头部的导入和初始化代码:
    将原代码第3行:
const { DurationFormatter } = new DurationFormatter();

替换为:

// 先从依赖包导入DurationFormatter类
const { DurationFormatter } = require("@discordjs/formatters");
// 实例化 formatter 工具
const durationFormatter = new DurationFormatter();
  1. 修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:18:03