discord.js运行ready事件时报client.user未定义如何解决?
问题原因及解决方法
1. 事件参数传递错误
discord.js的ready事件触发时没有内置返回参数,你当前事件处理器中调用event.execute(...args)的写法,会导致ready.js中execute函数接收的client形参为undefined,这就是触发Cannot read property 'user' of undefined报错的核心原因。
解决方法:修改事件绑定逻辑,主动将client对象作为第一个参数传入execute函数。
2. fs模块导入顺序错误
你当前的代码先调用了fs.readdirSync读取文件,之后才导入fs模块,运行时会额外触发fs未定义的报错,需要调整导入顺序。
修改后的事件处理器完整代码
// 先导入fs模块 const fs = require('fs'); const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js')); for (const file of eventFiles) { const event = require(`./events/${file}`); if (event.once) { // 固定传入client作为第一个参数,后续为事件原生参数 client.once(event.name, (...args) => event.execute(client, ...args)); } else { client.on(event.name, (...args) => event.execute(client, ...args)); } }
修改完成后你原本的ready.js代码无需调整,即可正常获取到client对象输出登录信息。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

