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

discord.js开发报错:TypeError: REST is not a constructor 求助

解决Discord机器人报错:TypeError: REST is not a constructor

问题原因

你遇到的错误是因为Discord.js v13及以上版本中,REST模块被拆分到了独立的@discordjs/rest包中,不再包含在discord.js核心包内。直接从discord.js导入REST会导致获取到的不是构造函数,从而抛出该错误。

解决方案

1. 安装独立的REST包

在项目根目录执行以下命令:

npm install @discordjs/rest

2. 修改代码中的导入语句

将原来的:

const { REST, Routes } = require('discord.js');

替换为:

const { REST } = require('@discordjs/rest');
const { Routes } = require('discord.js');

3. 版本适配(可选)

如果你的discord.js版本低于v13,建议升级到稳定的v13/v14版本以避免更多兼容性问题:

npm install discord.js@latest

修改后的完整代码示例:

const config = require("./config.json");
const Discord = require('discord.js');
const { Intents } = Discord;
const client = new Discord.Client({ 
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] 
})
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord.js');
const commands = [
  {
    name: 'test',
    description: 'test',
  },
];
const rest = new REST({ version: '10' }).setToken(config.BOT_TOKEN);
(async () => {
  try {
    console.log('Started refreshing application (/) commands.');

    await rest.put(Routes.applicationCommands(config.CLIENT_ID), { body: commands });

    console.log('Successfully reloaded application (/) commands.');
  } catch (error) {
    console.error(error);
  }
})();
client.on('interactionCreate', async interaction => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'test') {
    await interaction.reply('Hello boi!');
  }
});
client.login(config.BOT_TOKEN)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:21:06