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

Discord.js触发Cannot read 'set' of undefined错误如何解决

报错原因

核心报错源于变量名拼写错误:你在main.js中初始化命令集合时写的是单数形式client.command,后续调用时用的是复数形式client.commands,导致client.commands未定义,调用set方法时抛出类型错误。
同时你的代码还存在多个其他隐性问题,不修正后续还会出现其他报错。

修复步骤
  1. 修正集合命名拼写错误
    将main.js中的
client.command = new Discord.Collection();

修改为

client.commands = new Discord.Collection();
  1. 修正错误打印变量名
    将main.js中fs读取部分的
if(err) console.error(error)

修改为

if(err) console.error(err)

避免报错时出现未定义变量问题。

  1. 替换废弃事件名
    discord.js v13及以上版本已废弃message事件,需替换为messageCreate,将main.js中的
client.on('message', message =>{

修改为

client.on('messageCreate', message =>{
  1. 修正命令调用的未定义变量
    main.js中执行命令时你传入了未定义的bot变量,将
if (cmd) cmd.run(bot, message, args, prefix)

修改为

if (cmd) cmd.run(client, message, args, prefix)
  1. 清理ping.js冗余代码
    ping.js中不需要重复实例化Client对象,删除以下三行无用代码即可:
const { Client, Intents, DiscordAPIError } = require('discord.js');
const Discord = require('discord.js')
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
  1. 修正登录参数
    将client.login('Prefix')中的Prefix替换为你自己的Discord机器人真实令牌,否则会登录失败。

所有修改完成后重新执行node .即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:48:01