discord.js中实例化REST对象报Interface cannot be instantiated错误求助
问题原因
该报错是 WebStorm 2021.2.2 旧版本的 TypeScript 类型识别缺陷导致的,编辑器误将 @discordjs/rest 导出的 REST 类识别成了接口,并非你的代码本身存在问题。
解决方案
第一步:先对齐依赖版本
目前你用的代码仅兼容 v1.x 版本的 @discordjs/rest,如果安装了 v2.x 版本会出现实际运行报错,先执行以下命令锁定版本:
npm install @discordjs/rest@1.7.0
第二步:解决编辑器报错(三选一即可)
- 升级编辑器:将 WebStorm 升级到 2022.1 及以上版本,新版已经修复了 ESM 模块导出类的类型识别问题,不会再出现误判。
- 修改导入写法:将原导入语句
const {REST} = require("@discordjs/rest");
修改为显式导入:
const REST = require("@discordjs/rest").REST;
即可绕开编辑器的类型识别错误。
- 拆分实例化逻辑:如果仍有构造函数参数报错,拆分实例化和配置的步骤:
// 替换原来的 const rest = new REST({version:'9'}).setToken(token) const rest = new REST(); rest.setVersion('9'); rest.setToken(token);
额外排查项
如果实际运行代码仍报错,做以下两个调整:
- 把 catch 逻辑修改为打印完整错误,方便定位具体问题:
.catch(err => console.error(err))
- 确认
.env文件中的DISCORD_JS_TOKEN、clientId、guildId三个变量拼写正确、值配置无误。
内容的提问来源于stack exchange,提问作者flosephdev
相关产品推荐
相关产品推荐

