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

JS调用Youtube Data API执行fetch请求未返回完整内容问题排查

YouTube API直播状态查询问题修复方案
  • 核心错误:字段取值路径错误
    你当前代码直接访问FinalData.liveBroadcastContent,但该字段实际嵌套在返回结果的items数组的单条结果snippet对象下,正确取值路径为FinalData.items[0].snippet.liveBroadcastContent。你在控制台看到的id: [Object]、snippet: [Object]是Node.js打印嵌套对象的默认折叠效果,并非数据未返回。
  • 请求URL语法修正
    你提供的代码中fetch请求URL末尾key=(APIKey缺少闭合,实际使用时需补全为正确的API密钥,避免参数传递异常。
  • 可选:禁用缓存避免数据滞后
    如果仍存在fetch返回结果和浏览器不一致的情况,可给fetch添加禁用缓存的配置,避免本地缓存返回过期数据:
let response = await fetch("替换为你的完整API请求地址", { cache: "no-store" })
  • 修正后完整参考代码:
client.on('message', async message => {
    if(message.content == "!cat"){
        const getData = async () => {
            // 替换为你的正确APIKey
            const apiUrl = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCvaTdHTWBGv3MKj3KVqJVCw&eventType=live&type=video&key=YOUR_API_KEY"
            const response = await fetch(apiUrl, { cache: "no-store" })
            if(!response.ok) throw new Error(`请求失败,状态码:${response.status}`)
            return await response.json()
        }
        try {
            const finalData = await getData()
            if(finalData.pageInfo.totalResults === 0){
                message.reply("当前频道未开播")
            }else{
                const liveStatus = finalData.items[0].snippet.liveBroadcastContent
                message.reply(liveStatus === "live" ? "频道正在直播" : "频道未开播")
            }
        } catch (err) {
            console.error("查询出错:", err)
            message.reply("查询直播状态失败,请稍后重试")
        }
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:36:05