Firebase Auth JS SDK创建账号报错:Cannot read properties of undefined (reading 'then')
我每次尝试用以下代码创建新账号:
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
都会触发错误:
TypeError: Cannot read properties of undefined (reading 'then')
我的配置情况:
- 使用Firebase 9版本
- Firebase已通过配置信息正确初始化
- 控制台中已启用「邮箱/密码」登录方式
请问Firebase Authentication JavaScript SDK是否存在已上报的这类问题?
可能的原因及解决方法
这个错误并非Firebase Auth SDK v9的普遍已知问题,更大概率是代码或环境的局部问题,常见排查方向如下:
确认Firebase初始化时机
必须保证调用getAuth()和createUserWithEmailAndPassword前,Firebase已完成初始化。比如在React/Vue等框架中,避免在组件未挂载时执行Auth操作,可将相关逻辑放在组件挂载完成的生命周期钩子中,或通过onAuthStateChanged确认初始化状态。检查
email和password变量有效性
如果email或password为undefined,会导致createUserWithEmailAndPassword返回undefined,进而无法调用.then()。调用前可添加日志确认变量值:console.log(email, password); // 验证变量是否有合法值排查SDK导入冲突
Firebase 9采用模块化导入,禁止混用v8及以下版本的命名空间导入方式(如import firebase from 'firebase/app'),两种导入方式共存会导致内部方法导出异常。统一Firebase依赖版本
检查package.json中所有Firebase相关包(firebase/app、firebase/auth等)的版本是否统一为9.x,版本不匹配会引发内部方法无法正常调用的问题。清理构建缓存或检查环境
若使用Webpack、Vite等构建工具,尝试清除构建缓存后重新打包;浏览器环境下,确认CDN引入的Firebase模块化脚本加载正常。
目前Firebase官方Issue追踪平台未出现大量此类通用问题反馈,按上述步骤排查基本可定位并解决问题。
内容的提问来源于stack exchange,提问作者user9958772

