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

本地测试Firebase Auth触发器遇错误,求正确调用方式

解决Firebase Functions Shell调用Auth onCreate触发器的参数错误问题

嘿,我看出来你遇到的问题了——根源是在Functions Shell里调用触发器函数时,参数结构搞错了,导致函数里的user对象不是预期的格式,才会出现Cannot read property 'toLowerCase' of null的错误。

问题出在哪?

你写的createNewUser是Firebase Auth的onCreate触发器,这个触发器的回调函数只接受一个参数:就是Auth系统传递过来的UserRecord对象,里面直接包含email、uid这些属性。但你在Shell里调用的时候,不仅传了两个参数,还把用户信息嵌套在了user字段里,这就导致函数里拿到的user变量其实是{user: {email: 'some@email.com'}},而不是真正的UserRecord,自然user.email就成了null/undefined,调用toLowerCase()肯定会报错。

正确的调用姿势

在Firebase Functions Shell里,直接把模拟的UserRecord对象作为第一个参数传进去就行,不需要第二个参数,也不用嵌套user字段:

firebase > createNewUser({email: 'some@email.com', uid: '123'})

额外的小优化

另外,你现在用的admin.initializeApp(functions.config().firebase)初始化方式已经过时啦,现在Firebase Admin SDK推荐简化成这样:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(); // 不用再传functions.config().firebase啦

exports.createNewUser = functions.auth.user().onCreate((user) => {
  let lowerCaseEmail = user.email.toLowerCase();
  return admin.database().ref(`/users/${user.uid}/lowerCaseEmail`).set(lowerCaseEmail);
});

改完之后用正确的Shell命令调用,就能正常执行函数,把小写邮箱写入Realtime Database了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:15:23