You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js报错:无法读取未定义对象的属性'1'

解决Discord.js中"Cannot read property '1' of undefined"错误

嘿,我来帮你搞定这个问题!这个错误的根源很直接:你代码里的ServerAdmins变量要么根本没被声明,要么它的值是undefined,所以当你尝试访问ServerAdmins[1]的时候,JS就会抛出这个类型错误。

下面是具体的排查和解决步骤:

  • 第一步:检查ServerAdmins的定义与初始化
    先看看你代码里有没有声明这个变量,比如是不是只写了let ServerAdmins;但没给它初始化成数组?或者完全漏掉了声明?如果是你自己维护的管理员ID列表,一定要先给它一个初始值,比如:

    // 在文件开头或者合适的作用域里定义
    const ServerAdmins = ['管理员ID1', '管理员ID2', '管理员ID3'];
    

    另外要注意JS数组是0索引的,ServerAdmins[1]对应的是第二个元素,如果你的列表只有1个管理员,那ServerAdmins[1]会是undefined,这时候也要做判断哦。

  • 第二步:如果是要获取服务器的管理员成员
    如果你是想通过Discord API获取当前服务器的管理员,那不要自己瞎定义变量,直接用Discord.js提供的方法:

    client.on('message', message => {
      // 先排除DM消息,确保是在服务器里的指令
      if (!message.guild) return;
      
      // 筛选出服务器里拥有管理员权限的成员
      const adminMembers = message.guild.members.cache.filter(member => {
        return member.permissions.has('ADMINISTRATOR');
      });
      
      // 把Collection转成数组方便按索引访问
      const adminsArray = adminMembers.array();
      
      // 现在再检查数组元素,比如判断第二个管理员是否存在
      if (adminsArray[1]) {
        // 执行你的添加玩家到列表的逻辑
        console.log(`找到第二个管理员:${adminsArray[1].user.tag}`);
      } else {
        console.log("服务器里不足2个管理员");
      }
    });
    
  • 第三步:检查变量的作用域
    还要确认ServerAdmins是不是在你使用它的代码块的作用域内。比如如果它是在某个函数内部声明的,那在函数外面就访问不到,会变成undefined。确保变量的定义位置能被你的指令代码访问到。

总的来说,先把ServerAdmins这个变量的来源搞清楚——是你自己维护的ID列表,还是要从Discord服务器获取——然后确保它被正确初始化,再去访问它的元素,这个错误就解决啦!

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:14:40