Ubuntu服务器部署Discord Bot遇ReferenceError: Client未定义问题求助
解决Discord机器人ReferenceError: Client is not defined问题
错误原因分析
你遇到的ReferenceError: Client is not defined大概率是discord.js版本不兼容导致的——当前代码写法对应v12/v13版本,但如果服务器上安装的是v14+版本,导入方式和API都有变更,就会触发这个错误。另外也可能是依赖包损坏。
分步解决方案
1. 检查discord.js版本
在项目目录下执行命令查看版本:
npm list discord.js
如果版本是14.x.x及以上,需要调整代码写法;如果是旧版本,跳过这步直接检查依赖。
2. 修复依赖(通用步骤)
如果依赖包损坏,执行以下命令重装:
rm -rf node_modules package-lock.json npm install
3. 适配v14+版本的代码修改
v14+版本要求解构导入Client,且意图需要使用GatewayIntentBits枚举,同时原message事件已替换为messageCreate:
const { Client, GatewayIntentBits } = require('discord.js'); // 注意:需要同时启用必要意图,否则无法接收消息 const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages ] }); client.login("你的机器人Token"); client.on('messageCreate', message => { if (message.content === '!hello') { message.channel.send('Nazdar!'); } }); client.once('ready', () => { console.log('Ready!'); });
额外注意:必须在Discord开发者后台的机器人页面,手动开启
Message Content Intent权限,否则无法读取消息内容。
4. 若坚持使用旧版本(v12/v13)
如果要保留原有代码写法,可以指定安装旧版本:
npm install discord.js@13.16.0
但旧版本已停止维护,建议优先升级到v14+。
内容的提问来源于stack exchange,提问作者Štěpán Putzer
相关产品推荐
相关产品推荐

