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

Discord.js报错TypeError:无法读取undefined的'0'属性,如何解决?

问题分析与修复方案

错误根源

这个Cannot read properties of undefined (reading '0')错误,本质是discord-player在解析Spotify播放列表时,预期的某个数组结果为空,导致尝试读取索引0时失败。单首歌曲命令正常,说明机器人的基础播放逻辑、用户鉴权没问题,问题集中在播放列表的解析环节。

具体修复步骤

  • 强制指定Spotify播放列表搜索类型
    把searchEngine: QueryType.AUTO改成searchEngine: QueryType.SPOTIFY_PLAYLIST。之前用AUTO可能因为最近的库更新或Spotify链接格式变化,导致自动识别逻辑失效,无法正确解析播放列表链接。修改后的代码:

    let url = interaction.options.getString("url")
    const playlistResult = await client.player.search(url, {
        requestedBy: interaction.user,
        searchEngine: QueryType.SPOTIFY_PLAYLIST // 替换为明确的播放列表类型
    })
    
  • 检查discord-player版本
    这个错误大概率是库版本问题:

    • 如果是最近更新了discord-player,回退到之前功能正常的版本(比如查看package.json历史版本,用npm install discord-player@x.x.x指定版本);
    • 如果很久没更新,升级到最新稳定版,官方可能已经修复了Spotify解析的bug。
  • 增加结果校验逻辑
    为避免后续类似崩溃,在获取搜索结果后先做有效性检查:

    const playlistResult = await client.player.search(url, {
        requestedBy: interaction.user,
        searchEngine: QueryType.SPOTIFY_PLAYLIST
    })
    
    if (!playlistResult || !playlistResult.playlist || playlistResult.tracks.length === 0) {
        return interaction.reply("无法读取该Spotify播放列表,请确认链接有效且为公开列表");
    }
    
  • 验证播放列表权限
    确保用户提供的Spotify播放列表是公开可见的,私有列表会导致discord-player无法获取曲目数据,进而触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:27:42