使用discord.js时遇AttachmentBuilder is not a constructor错误求助
问题排查与解决
错误原因
AttachmentBuilder is not a constructor 错误通常源于两个问题:
- 未正确导入discord.js中的
AttachmentBuilder类 - 参数传递格式不符合discord.js v14+的规范
解决方法
1. 确认导入正确
根据你的项目模块系统,在代码顶部添加对应导入语句:
- ES模块(使用import/export):
import { AttachmentBuilder } from 'discord.js';
- CommonJS模块(使用require):
const { AttachmentBuilder } = require('discord.js');
2. 修正参数写法
discord.js v14+ 调整了AttachmentBuilder的参数结构,不能直接将Buffer作为第一个参数传入,正确写法有两种:
方式一:链式调用设置属性
const attachment = new AttachmentBuilder() .setFile(canvas.toBuffer('image/png')) .setName('DNI.png'); await interaction.reply({ files: [attachment] });
方式二:直接传入配置对象
const attachment = new AttachmentBuilder({ attachment: canvas.toBuffer('image/png'), name: 'DNI.png' }); await interaction.reply({ files: [attachment] });
3. 额外验证步骤
- 执行以下命令确认discord.js版本为v14及以上:
npm list discord.js
- 打印
canvas.toBuffer('image/png')的输出,确认结果为Buffer类型,避免canvas生成无效数据
内容的提问来源于stack exchange,提问作者Víctor Escobar
相关产品推荐
相关产品推荐

