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

Firebase注册报auth/invalid-value标量字段传参错误排查

错误原因

你遇到的报错本质是参数类型不匹配:createUserWithEmailAndPassword接口要求传入的邮箱、密码参数为字符串类型的标量值,但你实际传入的是包含value、error字段的state对象,因此SDK解析参数时抛出"在标量字段上启动对象"的类型错误。
你的代码存在两个明确问题:

  • 定义表单state时,email、password都是对象结构,但调用接口时直接传入了整个对象,没有取其中存储实际输入值的value字段
  • 代码中单独成行的auth是无效冗余代码,Firebase v9及以上版本采用模块化API,createUserWithEmailAndPassword是独立导入的函数,不需要挂载在auth实例上调用
修复步骤
  1. 修改registerscreen.js中的注册逻辑,传参时取state的value字段获取实际输入的字符串,同时删除冗余的单独auth行:
// 其余代码保持不变
const handleSignUp =() => {
  const nameError = nameValidator(name.value)
  const emailError = emailValidator(email.value)
  const passwordError = passwordValidator(password.value)
  if (emailError || passwordError || nameError) {
    setName({ ...name, error: nameError })
    setEmail({ ...email, error: emailError })
    setPassword({ ...password, error: passwordError })
    return
  }
  // 移除冗余的单独auth行,传参时取.value获取字符串值
  createUserWithEmailAndPassword(auth, email.value, password.value)
    .then(userCredentials => {
      const user = userCredentials.user;
      console.log(user.email)
    })
    .catch(error => alert(error.message))
}
  1. 清理firebase.js中的冗余导入,删掉未使用的依赖减少打包体积,修正后的初始化代码如下:
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";

const firebaseConfig = {
  apiKey: "AIzaSyA1zo9ci0RXQYBNUooGtSK2b29OPxOC0GE",
  authDomain: "aslassistfinal.firebaseapp.com",
  databaseURL: "https://aslassistfinal-default-rtdb.firebaseio.com",
  projectId: "aslassistfinal",
  storageBucket: "aslassistfinal.appspot.com",
  messagingSenderId: "380652280816",
  appId: "1:380652280816:web:5f49bf6df4977cdb401b35",
};

const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
export { auth }
验证方式

修改完成后重新触发注册流程,传入符合格式要求的邮箱、密码字符串即可正常调用注册接口,不会再出现该类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:27:18