Discord.js v13访问Collection报错.array()不是函数该如何处理
Discord.js v13 Collection.array() 报错解决方案
根因说明
Discord.js v13 对内置Collection类做了不兼容升级,原有的.array()实例方法已被官方移除,这是你触发TypeError: xxx.array is not a function报错的直接原因。
适配写法
针对你需要取Collection首元素的场景,共有3种可行的适配方案:
- 方案1:用原生
Array.from完成Collection到数组的转换,完全兼容原有逻辑Array.from(msg)[0].embeds[0] - 方案2:用ES6扩展运算符转换,写法更简洁
[...msg][0].embeds[0] - 方案3:直接调用Collection内置方法取值(推荐,无需全量转数组,性能更好)
取首元素可直接用.first()方法:
取指定下标元素可直接用msg.first().embeds[0].at()方法,用法和数组的at语法完全一致:// 示例:取下标为2的元素 msg.at(2).embeds[0]
注意事项
上述所有方案适用于所有返回Collection类型的Discord.js API场景,包括频道消息拉取、服务器成员查询、角色列表查询等。
内容的提问来源于stack exchange,提问作者Joaquin Parada
相关产品推荐
相关产品推荐

