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

使用Firebase GoogleAuthProvider创建谷歌登录弹窗报错求助

解决Firebase谷歌登录弹窗的"Cannot read properties of undefined (reading 'create')"错误

错误核心原因

这个报错是因为GoogleAuthProvider未被正确初始化或引用,大概率是你实现signInWithGooglePopup函数时,缺少Firebase Auth模块的正确导入,或者实例创建逻辑有误。

修正方案

1. 导入必要的Firebase Auth模块

先确保代码中正确导入Firebase Auth相关工具:

import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";

2. 正确实现signInWithGooglePopup函数

你的代码只调用了该函数但未给出实现,以下是标准的正确实现:

// 初始化Firebase Auth实例
const auth = getAuth();

const signInWithGooglePopup = async () => {
  // 创建GoogleAuthProvider实例
  const provider = new GoogleAuthProvider();
  try {
    const result = await signInWithPopup(auth, provider);
    // 可通过result.user获取登录用户信息
    return result;
  } catch (error) {
    // 捕获并处理登录错误
    console.error("谷歌登录失败:", error);
    throw error;
  }
};

3. 调整组件内的调用逻辑

确保signInWithGooglePopup函数在组件作用域内可访问,完整组件代码示例:

import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";

const SignIn = () => {
  const auth = getAuth();

  const signInWithGooglePopup = async () => {
    const provider = new GoogleAuthProvider();
    try {
      const result = await signInWithPopup(auth, provider);
      console.log(result);
      return result;
    } catch (error) {
      console.error("登录错误:", error);
    }
  };

  const logGoogleUser = async () => {
    const response = await signInWithGooglePopup();
    console.log(response);
  };

  return (
    <div>
      <h1>SignIn Page</h1>
      <button onClick={logGoogleUser}>Sign in with Google Popup</button>
    </div>
  );
};

export default SignIn;

额外排查点

  • 确认Firebase应用已完成初始化(调用过initializeApp配置项目信息)
  • 检查Firebase控制台的Auth模块中,已启用谷歌登录方式
  • 核对GoogleAuthProvider拼写,避免笔误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:22:39