【问题标题】:discord.js | Cannot read property 'set' of undefined不和谐.js |无法读取未定义的属性“集”
【发布时间】:2020-09-19 19:29:03
【问题描述】:

我在 discord.js v12 中创建了我的命令处理程序,但我不断收到此错误,即:

无法读取未定义的属性“集合”

这是我的代码,此代码位于名为 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 中,我创建了一个新集合。

【问题讨论】:

  • 你定义client.commands了吗?
  • 好吧,client.commands 是未定义的,我认为您不能有效地向自定义属性添加一些东西
  • 我确实在入口点定义了 client.command。

标签: javascript node.js discord.js


【解决方案1】:

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

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

您还必须确保在定义client.commands 时为其提供正确的对象类型。必须是client.commands = new Discord.Collection()

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 2020-05-22
    • 2020-11-10
    • 2020-11-11
    • 2021-04-15
    • 2021-05-08
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多