新版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
相关产品推荐
相关产品推荐

