在Replit上使用Discord.JS开发首个机器人时报Cannot find module 'node:events'错误
报错原因
Cannot find module 'node:events' 错误本质是Discord.JS版本与Node.js运行环境版本不兼容:
- Discord.JS v14及以上版本要求Node.js最低版本为16.9.0,
node:前缀的内置模块导入语法是Node.js 16.x版本新增的特性,你当前Replit环境的Node.js版本低于16.9.0,无法识别该语法,因此抛出模块找不到的错误。 - 额外说明:你代码中使用的
client.on("message")事件是Discord.JS v12及更早版本的专属API,v13之后该事件已被废弃,替换为messageCreate事件,后续版本适配需要注意该变更。
解决方法
方案1:升级Node.js版本(推荐,适配新版Discord.JS功能)
- 打开项目根目录下的
package.json文件,添加如下配置指定Node.js运行版本:
"engines": { "node": ">=16.9.0" }
- 修改代码适配新版Discord.JS的语法要求(新版需要手动声明网关意图才能正常接收消息):
const Discord = require("discord.js") const client = new Discord.Client({ intents: [ Discord.GatewayIntentBits.Guilds, Discord.GatewayIntentBits.GuildMessages, Discord.GatewayIntentBits.MessageContent ] }) client.on("ready", () => { console.log(`Logged in as ${client.user.tag}!`) }) // 将废弃的message事件替换为messageCreate client.on("messageCreate", msg => { if (msg.content === "ping") { msg.reply("pong"); } }) client.login(process.env.TOKEN)
- 操作完成后需要到Discord开发者平台的Bot设置页,开启
Message Content Intent开关,否则无法获取到用户发送的消息内容。
方案2:降级Discord.JS版本(适配现有运行环境,匹配旧教程语法)
如果不想调整Node.js版本,可以直接安装和旧教程匹配的Discord.JS v12版本:
- 在Replit的Shell终端执行安装命令:
npm install discord.js@12.5.3 - 安装完成后直接运行你最初编写的代码即可正常启动。
内容的提问来源于stack exchange,提问作者MenIndo
相关产品推荐
相关产品推荐

