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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:12:36