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

Discord.js Collection报错:TypeError: 无法读取undefined的get属性

问题定位与解决方案

报错TypeError: Cannot read properties of undefined (reading 'get')的核心原因是:在interactionHandler.js中调用client.originalAuthors时,该属性未被正确挂载到当前使用的client实例上,可能是实例不一致或初始化时机错误导致的。以下是针对性的解决步骤:

方案1:使用交互对象自带的client实例(推荐)

Discord.js的交互对象(如ButtonInteraction)本身持有机器人的全局client实例,直接从交互对象中获取,可彻底避免实例不一致问题:

// interactionHandler.js
module.exports = {
  async handleButtonInteraction(interaction) {
    // 从交互对象中获取正确的client实例
    const targetAuthor = interaction.client.originalAuthors.get(messageId);
    // 后续恢复消息的逻辑...
  }
};

方案2:确保client实例的导出与导入一致

如果需要手动导入client,必须保证导入的是index.js中初始化的同一个实例:

  1. 在index.js中导出client:
// index.js
const { Client, Collection } = require('discord.js');
const client = new Client({ intents: [...] });

// 先初始化Collection
client.originalAuthors = new Collection();

// 导出全局client实例
module.exports = client;
  1. 在interactionHandler.js中正确导入(注意路径匹配你的文件结构):
// interactionHandler.js
// 若interactionHandler在子文件夹中,路径需调整为../index.js
const client = require('./index.js');

// 调用Collection方法
const targetAuthor = client.originalAuthors.get(messageId);

方案3:调整初始化与模块加载顺序

确保client.originalAuthors的初始化早于其他模块的加载,避免模块加载时client还未挂载该属性:

// index.js
const { Client, Collection } = require('discord.js');
const client = new Client({ intents: [...] });

// 第一步:初始化Collection
client.originalAuthors = new Collection();

// 第二步:加载其他业务模块
const msgDel = require('./msgDel.js');
const interactionHandler = require('./interactionHandler.js');

// 最后启动机器人
client.login('你的机器人Token');

调试技巧

可在interactionHandler.js中添加日志,快速定位问题:

// interactionHandler.js
console.log('当前client实例的属性:', Object.keys(client));
console.log('originalAuthors是否存在:', !!client.originalAuthors);

若打印结果中没有originalAuthors,说明当前使用的client实例不是index.js中初始化的那个,需检查导入或实例获取方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:02:45