Firebase Functions v6.1.0 Auth用户删除触发器TypeError问题排查
问题
在Firebase Functions v6.1.0中配置用户删除的Auth触发器时触发TypeError错误,最小复现代码如下:
const functions = require('firebase-functions'); const admin = require('firebase-admin'); const { getFirestore } = require('firebase-admin/firestore'); admin.initializeApp(); exports.registerUser = functions.https.onCall(async (data, context) => { }); exports.deleteUser = functions.auth.user().onDelete(async () => { // <<<< ERROR });
报错信息:
TypeError: Cannot read properties of undefined (reading 'user') at Object.<anonymous> (/Users/thierry/Documents/firebase-app/functions/index.js:16:37) at Module._compile (node:internal/modules/cjs/loader:1546:14) at Module._extensions..js (node:internal/modules/cjs/loader:1691:10) at Module.load (node:internal/modules/cjs/loader:1317:32) at Module._load (node:internal/modules/cjs/loader:1127:12) at TracingChannel.traceSync (node:diagnostics_channel:315:14) at wrapModuleLoad (node:internal/modules/cjs/loader:217:24) at Module.require (node:internal/modules/cjs/loader:1339:12) at require (node:internal/modules/helpers:135:16) at loadModule (/Users/thierry/Documents/firebase-app/functions/node_modules/firebase-functions/lib/runtime/loader.js:40:16)
环境信息:
- firebase-functions: 6.1.0
- firebase-admin: 12.7.0
- Node.js: 22
尝试过functions.auth.user().beforeDelete、functions.identity.beforeUserDeleted、functions.auth.userDeleted().onEvent等语法,均无效,按官方文档写法仍报错,求正确配置方式。
解决方案
Firebase Functions v6.x 采用了全新的模块化API,旧版本的functions.auth.user()语法已被废弃,需使用新的身份验证触发器写法:
正确代码示例
const functions = require('firebase-functions'); const admin = require('firebase-admin'); const { getFirestore } = require('firebase-admin/firestore'); admin.initializeApp(); exports.registerUser = functions.https.onCall(async (data, context) => { }); // 用户删除完成后触发的触发器 exports.deleteUser = functions.identity.userDeleted().onRun(async (event) => { // 获取删除的用户信息 const deletedUser = event.data; console.log('Deleted user:', deletedUser); // 执行业务逻辑,比如清理Firestore中的用户数据等 }); // 用户删除前触发的预处理触发器 exports.beforeDeleteUser = functions.identity.beforeUserDeleted().onRun(async (event) => { const userToDelete = event.data; console.log('User to delete:', userToDelete); // 执行删除前的预处理逻辑 });
关键说明
- v6.x版本中,身份验证相关触发器统一移至
functions.identity命名空间下 - 用户删除事件分为两种:
userDeleted():用户删除完成后触发beforeUserDeleted():用户删除前触发
- 触发器的处理函数通过
onRun方法绑定,而非旧版的onDelete或beforeDelete - 可通过
event.data获取触发事件的用户对象,包含用户UID、邮箱等核心信息
内容的提问来源于stack exchange,提问作者thierryb
相关产品推荐
相关产品推荐

