Firebase云函数TypeScript报错:Timestamp缺少toJSON属性
解决Firebase Cloud Function中Timestamp类型不兼容问题
问题根源
你遇到的错误是因为导入的Timestamp类型来自两个不同的SDK包:
- 接口
FirestoreSerp里的Timestamp来自客户端SDK的firebase/firestore - 代码中生成的
admin.firestore.Timestamp.fromDate(...)是服务端Admin SDK的Timestamp类型
这两个类型在TypeScript中被视为不同的类型,服务端Timestamp缺少客户端类型要求的toJSON属性,导致类型校验失败。
修复方案
统一使用Admin SDK的Timestamp类型即可,有两种实现方式:
方式1:从admin中导入Timestamp
修改导入语句,将Timestamp的来源替换为Admin SDK:
import * as admin from 'firebase-admin'; // 从Admin SDK导入Timestamp类型 import { Timestamp } from 'firebase-admin/firestore'; interface FirestoreSerp { createdAt: Timestamp; keyword: string; } const datetime = '2019-11-15 12:57:46 +00:00' const firestoreSerp: FirestoreSerp = { createdAt: admin.firestore.Timestamp.fromDate(new Date(datetime)), keyword: 'rickety cricket', };
方式2:直接用完整路径定义接口类型
如果不想额外导入,也可以直接在接口中使用Admin SDK的完整类型路径:
import * as admin from 'firebase-admin'; interface FirestoreSerp { createdAt: admin.firestore.Timestamp; keyword: string; } const datetime = '2019-11-15 12:57:46 +00:00' const firestoreSerp: FirestoreSerp = { createdAt: admin.firestore.Timestamp.fromDate(new Date(datetime)), keyword: 'rickety cricket', };
注意事项
在Firebase Cloud Function这类服务端环境中,建议全程使用firebase-admin提供的类型和API,避免混用客户端SDK的类型,防止出现类似的类型不兼容问题。
内容的提问来源于stack exchange,提问作者TinyTiger
相关产品推荐
相关产品推荐

