我正在discord.js v12中创建命令处理程序,并且不断收到此错误,即:
无法读取未定义的属性“ set”
这是我的代码,该代码位于名为handlers
的文件夹中
const { readdirSync, readdir } = require('fs');
const ascii = require('ascii-table');
let table = new ascii('commands');
table.setHeading('Commands', 'Status');
module.exports = (client) => {
readdirSync('./commands/').forEach((dir) => {
const commands = readdirSync(`./commands/${dir}/`).filter((file) =>
file.endsWith('.js')
);
for (let file of commands) {
let pull = require(`../commands/${dir}/${file}`);
if (pull.name) {
client.commands.set(pull.name, pull);
table.addRow(file, '✅');
} else {
table.addRow(
file,
`❌ -> Missing a help.name, or help.name in not a string.`
);
continue;
}
if (pull.aliases && Array.isArray(pull.aliases))
pull.aliases.forEach((alias) => client.aliases.set(aliases, pull.name));
}
});
console.log(table.toString());
};
在入口点main.js
中,我收集了一个新集合。
答案 0 :(得分:0)
这里的问题是您在单独的文件中工作,因此您无法访问另一个文件中定义的变量
要解决此问题,在main.js文件中,您需要使用module.exports.client = client
;在handler.js文件中,您可以使用const client = require("../main.js").client
还必须确保在定义client.commands
时,给它正确的对象类型。它必须是client.commands = new Discord.Collection()