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

Discord.js开发转录按钮时报msgs.forEach is not a function错误如何解决

错误原因

TypeError: msgs.forEach is not a function 报错的核心是 msgs 变量不是数组,不存在forEach方法。
你当前使用的discord.js版本≥v13时,官方已经完全移除了Collection类的.array()内置方法,你调用该不存在的方法会返回undefined,赋值给msgs后自然无法调用数组原型上的forEach方法。

修复步骤
  1. 替换数组转换代码
    将你代码中的如下行:
let msgs = messageCollection.array().reverse();

替换为以下任意一种合法的Collection转数组写法:

  • 扩展运算符写法:
let msgs = [...messageCollection.values()].reverse();
  • Array.from写法:
let msgs = Array.from(messageCollection.values()).reverse();
  1. 其他潜在问题修复(可选但建议)
  • 你当前的消息拉取操作只做了错误打印没有兜底逻辑,如果拉取失败返回undefined,后续调用channelMessages.size会直接抛出新错误,建议在catch分支增加中断逻辑。
  • forEach不支持异步等待,你在forEach回调中使用async/await不会等待文件写入完成,可能导致后续发送文件时文件未写完读取失败,建议将forEach改为普通for...of循环:
for (const msg of msgs) {
  // 原forEach内的逻辑直接迁移到此处即可
}
  • 如果你是在原生Node.js环境运行该代码,要确认已经引入jsdom等DOM模拟库初始化了document对象,否则后续DOM操作相关代码会直接报错。

内容的提问来源于stack exchange,提问作者Otávio Quirino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:15:02