Discord.js欢迎嵌入消息代码运行npm run报Cannot find module 'node:events'错误
错误原因
- 核心原因是当前安装的discord.js版本和运行环境的Node.js版本不兼容:discord.js v14及以上版本使用了
node:前缀的核心模块导入语法,该语法仅在Node.js 16.9.0及更高版本中支持,你当前运行环境的Node.js版本低于该要求,无法识别node:events模块导入逻辑。 - 额外的代码兼容问题:你贴出的代码使用的是discord.js v11的API,discord.js v12及之后版本已经弃用
Discord.RichEmbed,替换为Discord.MessageEmbed,同时频道获取方法guild.channels.get()也已弃用,需改为guild.channels.cache.get(),高版本discord.js发送嵌入消息的语法也有调整。
修复步骤
- 优先选择升级Node.js版本到16.9.0或更高版本,你可以执行
node -v查看当前版本,升级完成后重新执行npm install安装依赖。 - 如果你不想升级Node.js版本,可以直接降级discord.js到匹配你代码的v11版本,执行命令:
npm install discord.js@11.6.4,安装完成后直接运行npm run即可正常启动。 - 如果你选择使用高版本discord.js,需要调整代码为兼容写法,参考如下:
const Discord = require('discord.js'); const { MessageEmbed } = Discord; bot.on('guildMemberAdd', member => { const exampleEmbed = new MessageEmbed() .setColor('#2f3136') .setTitle('Welcome to miyoko.') .setImage("https://media.discordapp.net/attachments/891480598680600608/893855953831743508/image0.jpg") .setThumbnail("https://cdn.discordapp.com/icons/891338757972840458/603efa60b46e5dd8b09aafeaf8167c5c.webp") .setDescription('<:asc_bhrttt:893064714735726622> <#892951925270642739> \n <:ra_xheart01:893064647698178069> <#892953158299582484> \n <:ra_xheart02:893065191170924544> <#892954010993164308') member.guild.channels.cache.get('891480598680600608').send({ embeds: [exampleEmbed] }); })
- 调整完成后重新执行
npm run启动项目即可。
内容的提问来源于stack exchange,提问作者lexy
相关产品推荐
相关产品推荐

