Discord机器人discord-buttons依赖报错:Class extends值undefined不是构造函数或null
报错诱因
- 核心原因是你使用的
discord-buttons依赖包已经停止维护,仅适配discord.js v12版本,与更高版本的discord.js不兼容。discord.js v13及以上版本重构了内部结构,移除了原有v12版本中存在的APIMessage类,导致discord-buttons继承该类时找不到目标值,触发类型错误。 - 次要诱因也可能是discord.js v12的小版本不匹配、本地依赖缓存损坏、项目中存在多个版本的discord.js冲突,导致discord-buttons无法正确导入目标类。
修复方案
场景1:继续使用discord.js v12版本
- 先执行
npm list discord.js确认本地discord.js版本为v12.x系列,若版本过高先降级:npm install discord.js@12.5.3 - 卸载现有discord-buttons,重装适配v12的对应版本:
npm uninstall discord-buttons npm install discord-buttons@4.0.0
- 若仍报错,删除项目根目录的
node_modules文件夹和package-lock.json文件,重新执行npm install安装所有依赖。
场景2:升级到discord.js v13及以上版本(更推荐)
discord.js从v13版本开始已经官方内置了按钮、选择菜单等交互组件,无需再使用第三方的discord-buttons包,修复步骤如下:
- 卸载弃用的discord-buttons包:
npm uninstall discord-buttons - 升级discord.js到最新稳定版:
npm install discord.js@latest - 将项目中原有调用discord-buttons的代码替换为discord.js官方内置的组件API即可,原有按钮相关逻辑官方均有对应实现。
内容的提问来源于stack exchange,提问作者DanielSograim
相关产品推荐
相关产品推荐

