You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Discord.js机器人报错ReferenceError: Discord is not defined如何解决

错误原因

ReferenceError: Discord is not defined
这个报错的根本原因是你没有在代码中引入Discord全局命名空间,也没有单独导入Collection类,直接调用Discord.Collection时找不到对应的对象定义。

解决方法

两种方案选其一即可:

方案1:单独导入Collection类

修改你的第一行导入语句,将Collection加入解构列表:

const { Client, Intents, DiscordAPIError, Collection } = require('discord.js');

再将报错的第9行修改为:

client.commands = new Collection();

这是更轻量化的写法,不需要导入整个discord.js模块的所有内容。

方案2:全量导入Discord命名空间

如果你希望保留Discord.Collection的写法,就把第一行的解构导入改为全量导入:

const Discord = require('discord.js');

注意修改后续用到的其他discord.js内置类的调用方式,比如创建客户端的代码要对应修改为:

const client = new Discord.Client({ intents: [Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES] });

其他注意事项

你的代码里还存在其他会导致后续报错的问题,建议同步修复:

  • 你定义的前缀常量是const PREFIX = '$',但在message事件里切割参数时用的是小写的prefix,变量名不匹配会抛出未定义错误,需要统一变量名。
  • client.login()方法现在写在了play函数内部,只有play被调用时才会执行登录逻辑,正常情况应该将这行代码移到整个脚本的最末尾、全局作用域下,才能让机器人正常启动登录。
  • 如果你使用的是discord.js v13及以上版本,message事件已被弃用,需要替换为messageCreate事件,playStream方法也需要替换为play方法,避免兼容问题。

内容的提问来源于stack exchange,提问作者FatherFabian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:36:02