【问题标题】:How to fix 'Cannot read property 'id' of 'null'如何修复'无法读取'null'的属性'id'
【发布时间】:2019-05-22 02:22:39
【问题描述】:

我不时收到此错误消息,导致我的机器人崩溃。
这是控制台中的错误消息:

C:\Users\Administrator\Desktop\FortniteRanked8.5\events\message.js:7
  if(prefixed.hasOwn(message.guild.id)){
                                   ^

TypeError: Cannot read property 'id' of null
    at module.exports (C:\Users\Administrator\Desktop\FortniteRanked8.5\events\message.js:7:36)

问题出在这一行:

if (prefixes.hasOwn(message.guild.id)){

设置:

  • Windows 服务器 2012
  • Discord.js : v11.4.2
  • 节点:v8.11.1

代码:

const Store = require('data-store');

module.exports = (client, message) => {
  var prefixes = new Store({ path: __dirname + '/../prefixes.json' });
  // console.log(prefixes.clone())

  if (message.author.bot) return;

  var prefix = client.config.prefix

  if (prefixes.hasOwn(message.guild.id)){
    prefix = prefixes.get(message.guild.id)
  }

  if (message.content.indexOf(prefix) !== 0) return;

  const args = message.content.slice(prefix.length).trim().split(/ +/g);
  const command = args.shift().toLowerCase();
  const cmd = client.commands.get(command);

  if (!cmd) return;

  if (cmd && !message.guild)
    return message.channel.send("Vous ne pouvez pas faire de commande ici, Merci de faire les commandes directement sur votre serveur discord.");

  cmd.run(client, message, args);
};

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    您正在访问的 Guild 对象不存在。所以它没有id 成员。所以它说,TypeError: Cannot read property 'id' of null。感谢所有其他用户的贡献。

    更多关于 TypeError.

    解决办法:

    您需要检查您正在访问的公会是否存在。为此,您需要检查公会的 available 属性。

    /* Check the evidence of guild's existance */
    if(message.guild.available === true && prefixes.hasOwn(message.guild.id))
    

    【讨论】:

      【解决方案2】:

      如果错误消息显示“无法读取 null 的属性 'id'”,则表示 guild 属性存在,但它是 null。正如之前所说,您必须检查它,但除此之外,您还必须检查:为什么guildnull

      如果没有属性,您会得到 “无法读取未定义的属性 'id'” 作为错误。

      【讨论】:

      • 非常感谢您的解释!
      【解决方案3】:

      message.guild 为空,在您检查它是否存在之前,如message && message.guild && ...。使用它可以确保所有字段都存在。

      【讨论】:

      • 谢谢,确实没想到。
      【解决方案4】:

      使用前检查公会

      if(message.guild && prefixes.hasOwn(message.guild.id))
      

      【讨论】:

      • 非常感谢您的快速回答我会做测试,我会通知你消息
      猜你喜欢
      • 2023-01-12
      • 2020-02-06
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多