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

Firebase Realtime Database经Axios GET请求后返回undefined问题排查

Firebase Realtime Database REST请求返回200但data为undefined的排查方案

核心问题定位:缺少.json后缀

Firebase Realtime Database的REST API强制要求请求路径以.json结尾,你当前的请求路径/users/没有加这个后缀,服务器返回的是HTML页面而非JSON数据,Axios无法解析HTML为JSON对象,因此response.data会是undefined。

代码修正方案

把await axios的请求路径改为带.json后缀的格式,同时建议用try/catch替代await与.then/.catch混用的写法,避免时序混乱:

const axios = require('axios');
const { SlashCommandBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('activitytest')
        .setDescription('Returns scriptedethqns activity.'),
    async execute(interaction, client) {
        try {
            const response = await axios({
                method: 'get',
                // 关键:添加.json后缀
                url: 'https://timedbtester-default-rtdb.europe-west1.firebasedatabase.app/users.json',
                params: {
                    print: "pretty",
                    auth: "0tPszWgsfm16PT3rFiXVqbGzmh7g4mSqCPRVE8ny"
                }
            });
            console.log("获取到的数据:", response.data);
            await interaction.reply(`获取到用户数据:${JSON.stringify(response.data)}`);
        } catch (err) {
            console.error(err);
            await interaction.reply("⛔ 请求出错,请查看控制台日志");
        }
    },
};

额外排查点

  1. 权限规则验证
    进入Firebase控制台的Realtime Database规则页,确认当前规则允许你的auth token对应的用户读取/users节点。默认规则要求auth != null,如果你的规则更严格,需确保token对应的UID有读取权限。

  2. 直接测试API可用性
    用浏览器或Postman直接访问修正后的URL(带上auth参数),查看返回内容:

    • 如果返回正常JSON数据,说明API本身无问题,确认代码逻辑即可;
    • 如果返回空对象或错误,说明权限或路径仍有问题,需检查数据库节点是否存在、token是否有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:03:12