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

新版Firebase如何使用firebase.firestore.FieldValue.serverTimestamp()?

问题原因

报错是因为Firebase v9及之后的版本采用了模块化API设计,完全废弃了旧版本import firebase from "firebase"的全局命名空间导入方式,原有firebase.firestore.FieldValue.serverTimestamp()的写法不兼容新版本。

正确使用方法(推荐模块化写法)
  • 先确认已安装Firebase依赖,未安装可执行命令:
    npm install firebase
  • 从firebase/firestore模块中直接导入serverTimestamp方法,和你已使用的addDoc、collection同属一个导入源:
import { addDoc, collection, serverTimestamp } from "firebase/firestore";
  • 直接在写入数据的字段位置调用serverTimestamp()即可,无需通过firebase命名空间调用:
const someFunction = () => {
    addDoc(collection(db, `rooms/${roomId}/messages`), {
      message: input,
      name: user.displayName,
      timestamp: serverTimestamp(),
    }).then((res) => getMessagesData());
  };
兼容旧代码写法

如果需要保留原有命名空间调用逻辑不做大规模重构,可以导入Firebase兼容包:

import firebase from "firebase/compat/app";
import "firebase/compat/firestore";

此场景下原有firebase.firestore.FieldValue.serverTimestamp()写法可正常运行,但相比模块化写法包体积更大,无tree-shaking优化,仅作为过渡方案使用。

内容的提问来源于stack exchange,提问作者jethro-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:36:04