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

升级Angular13和Firebase9后报错无导出成员User,应从何处导入?

解决方案

AngularFire 9 对应适配 Firebase 9+ 版本,该版本采用模块化 API 设计,原有全局firebase命名空间下的类型定义已调整位置,不再支持firebase.User这种写法。

兼容层适配方案(你当前使用@angular/fire/compat/*导入路径的场景)

直接从@angular/fire/compat/auth导入User类型即可,兼容层导出的User类型和原有firebase.User结构完全一致,替换后不需要调整后续业务逻辑:

  1. 替换原有的全局firebase导入,新增类型导入:
// 删掉原有 import * as firebase from 'firebase/app' 这类全局导入
import { User } from '@angular/fire/compat/auth';
  1. 修改方法参数的类型声明,把firebase.User替换为导入的User类型:
private createProfile(user: User | null): UserProfile | null {
    if (!user) {
      return null;
    }
    return {
      displayName: user.displayName ?? '',
      email: user.email ?? '',
      photoURL: user.photoURL ?? '',
      uid: user.uid,
      userIncomplete: !user.displayName || !user.email || !user.photoURL,
    };
}

模块化API适配方案(后续完全弃用compat层的场景)

如果后续你计划迁移到Firebase 9+原生模块化API,不需要用兼容层的话,从firebase/auth直接导入User类型即可:

import { User } from 'firebase/auth';

额外提示

你项目中其他用到firebase命名空间下的Auth相关类型,都可以对应从上述两个导入路径中查找对应类型导入,无需再通过全局firebase命名空间获取类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:05