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

Firebase Auth导入UserMetadata报错 无法获取lastSignInTime属性

问题原因

你遇到的导入错误是因为UserMetadata不是@firebase/auth包对外导出的可直接导入的实体,它只是TypeScript类型定义,用来描述用户实例下元数据字段的结构,同时你尝试直接访问UserMetadata.lastSignInDate的写法也不对,该属性是绑定在具体登录用户实例上的属性,不是全局静态属性。

解决步骤
  • 第一步:删除导入语句中的UserMetadata,修正导入代码为:
import { getAuth } from '@firebase/auth'
  • 第二步:通过已登录的用户实例获取元数据,你已经引入了useAuth上下文钩子,正常来说该钩子会返回当前登录的currentUser对象,你可以直接从该对象的metadata属性中拿到lastSignInTime,示例代码如下:
const Trainings = () => {
  const { currentUser } = useAuth()
  const firebaseConfig = {
      // 你的配置项      
  }
  
  const app = initializeApp(firebaseConfig)
  const db = getFirestore(app);
  const auth = getAuth(app);

  // 要先判断用户是否登录,避免空值报错
  useEffect(() => {
    if(currentUser) {
      console.log(currentUser.metadata.lastSignInTime)
    }
  }, [currentUser])

  // 其余逻辑代码
}
  • 如果你没有从useAuth中拿到currentUser,也可以通过auth实例监听登录状态获取:
useEffect(() => {
  const unsubscribe = onAuthStateChanged(auth, (user) => {
    if (user) {
      console.log(user.metadata.lastSignInTime)
    }
  })
  // 组件卸载时取消监听
  return () => unsubscribe()
}, [auth])

注意:不要在组件顶层直接初始化Firebase应用,避免重复初始化报错,建议把Firebase初始化逻辑抽离到单独的配置文件中,全局只初始化一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:36:03