Firebase V1 Auth回调函数报错及部署区域配置问题求助
问题解决与说明
错误原因及修正方案
你遇到的TypeError: handler is not a function错误有两个核心原因:
1. 回调函数参数顺序错误
Firebase Functions V1中,onCreate和onDelete的参数顺序是先处理函数,后配置对象。你当前把区域配置放在了第一个参数位置,导致系统将配置对象误判为处理函数,触发错误。
2. 缺少Firestore相关对象的导入
代码中使用了getFirestore()和FieldValue,但未从firebase-admin中导入这两个对象,运行时会引发未定义错误。
修正后的完整代码
const functions = require("firebase-functions"); // v1 const {initializeApp} = require("firebase-admin/app"); const {getFirestore, FieldValue} = require("firebase-admin/firestore"); initializeApp(); const db = getFirestore(); // 调整参数顺序:处理函数在前,配置对象在后 exports.authUserCreated = functions.auth.user().onCreate((user) => { const userEmail = user.email; const userId = user.uid; // 用set({merge: true})替代update,避免文档不存在时操作失败 return db.collection("users").doc(userId).set({ createdAt: FieldValue.serverTimestamp(), email: userEmail }, {merge: true}); }, {region: "europe-west1"}); exports.authUserDeleted = functions.auth.user().onDelete((user) => { const userId = user.uid; return db.collection("users").doc(userId).delete(); }, {region: "europe-west1"});
关于区域部署的问题
Firebase Functions V1完全支持将函数部署到europe-west1区域,只要在配置对象中正确指定region参数即可,修正参数顺序后你的配置就能正常生效。
内容的提问来源于stack exchange,提问作者Konstantin Konopko
相关产品推荐
相关产品推荐

