discord.js |无法读取未定义的属性“ set”

时间:2020-09-18 11:52:18

标签: javascript node.js discord.js

我正在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中,我收集了一个新集合。

1 个答案:

答案 0 :(得分:0)

这里的问题是您在单独的文件中工作,因此您无法访问另一个文件中定义的变量

要解决此问题,在main.js文件中,您需要使用module.exports.client = client;在handler.js文件中,您可以使用const client = require("../main.js").client

还必须确保在定义client.commands时,给它正确的对象类型。它必须是client.commands = new Discord.Collection()