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
相关产品推荐
相关产品推荐

