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

TypeScript报错TS2339:Reference类型上不存在属性'get'如何解决?

解决TypeScript报错:Property 'get' does not exist on type 'Reference'. TS2339

错误原因

该报错是因为你当前使用的Firebase Realtime Database SDK版本、类型定义与你写的API不匹配:get() 方法不是所有版本的Firebase数据库Reference实例都支持的API。

对应解决方案

根据你使用的SDK版本选择对应修改方式:

方案1:使用v8及更早版本的命名空间风格SDK

v8及更早版本的Realtime Database没有Reference.get()方法,需要替换为once('value')获取一次性节点数据,仅修改报错行即可,其余逻辑不需要改动:

// 把原来的报错行替换为下面这行
const roomRef = await database.ref(`rooms/${roomCode}`).once('value');

替换后exists()、val()方法都可以正常调用。

方案2:使用v9及以上版本的SDK

v9版本默认提供模块化API,不支持database.ref()这种命名空间风格的写法,需要调整导入和调用逻辑:

  1. 首先导入对应模块化方法
import { getDatabase, ref, get } from "firebase/database";
  1. 调整获取数据的逻辑
const db = getDatabase();
const roomRef = ref(db, `rooms/${roomCode}`);
const roomSnapshot = await get(roomRef);
// 后续的exists()、val()调用无需修改,直接用roomSnapshot调用即可

如果你想在v9版本继续沿用老的命名空间写法,需要切换为compat兼容包:

  • 导入时使用compat路径:import firebase from 'firebase/compat/app'; import 'firebase/compat/database';
  • 安装匹配的类型定义,确保类型识别正常

额外排查项

如果版本匹配仍报错,可删除node_modules文件夹、package-lock.json/yarn.lock文件后重新执行依赖安装,清除类型缓存即可解决。


内容的提问来源于stack exchange,提问作者Joao Pedro Vieira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:04