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

Discord.js运行报TypeError: client.on is not a function错误如何解决?

报错原因

TypeError: Client.on is not a function 报错的核心原因是你调用on方法的对象不是Discord.js Client类的有效实例,常见场景如下:

  • ../index.js文件导出的是Client类本身,而非实例化后的客户端对象。on是Client类的实例方法,必须在new生成的实例上调用,不能直接用类调用。
  • ../index.js中实例化了Client对象,但没有通过module.exports正确导出,导致require("../index")拿到的是空对象或其他非预期值。
  • 导入路径填写错误,实际引入的文件不是你存放Client实例的index.js,自然不存在on方法。
解决方案
  1. 修正index.js的导出逻辑,确保导出的是实例化后的Client对象,参考写法:
const { Client, IntentsBitField } = require('discord.js');
// 必须开启对应intents,Guilds权限是接收guildCreate事件的前提
const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMessages,
    // 其他业务需要的权限
  ]
});

// 导出实例,这一步不能漏
module.exports = client;

client.login('你的机器人Token');
  1. 核对当前文件的导入路径,确保../index对应你存放Client实例的index.js的相对位置。
  2. 额外兼容调整:Discord.js v13及以上版本已废弃频道类型的字符串判断,你代码里的channel.type === "text"会失效,需要调整为枚举值判断:
// 首先引入ChannelType
const { MessageEmbed, ChannelType } = require("discord.js");
// 对应判断条件修改为
channel.type === ChannelType.GuildText

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:09:04