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

部署Firebase Auth触发函数时遇TypeError: 无法读取undefined的'user'属性

排查Firebase Cloud Function用户创建事件触发错误

我正在开发一个Firebase Cloud Function,需求是监听Firebase Authentication的用户创建事件,在实时数据库中以用户ID为键创建新记录,记录包含email字段和值为false的permission字段。但部署时触发错误,具体代码、错误信息及package.json如下:

原代码

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp();

const addUserToDatabase  = (userRecord) => {
    const uid = userRecord.uid;
    const email = userRecord.email;
  
    return admin.database().ref(`/Users/${uid}`).set({
      email: email,
      permission: false
    });
  }

// This function runs when a new user is created via Firebase Authentication

module.exports = {
    addUserToDatabase: functions.auth.user().onCreate(addUserToDatabase),
  }

错误信息

TypeError: Cannot read properties of undefined (reading 'user')
    at Object.<anonymous> (/Users/yanir/coding/fBCLI/functions/index.js:19:39)
    at Module._compile (node:internal/modules/cjs/loader:1554:14)
    at Object..js (node:internal/modules/cjs/loader:1706:10)
    at Module.load (node:internal/modules/cjs/loader:1289:32)
    at Function._load (node:internal/modules/cjs/loader:1108:12)
    at TracingChannel.traceSync (node:diagnostics_channel:322:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:220:24)
    at Module.require (node:internal/modules/cjs/loader:1311:12)
    at require (node:internal/modules/helpers:136:16)
    at loadModule (/Users/yanir/coding/fBCLI/functions/node_modules/firebase-functions/lib/runtime/loader.js:40:16)

package.json

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "22"
  },
  "main": "index.js",
  "dependencies": {
    "firebase-admin": "^12.6.0",
    "firebase-functions": "^6.3.2"
  },
  "devDependencies": {
    "firebase-functions-test": "^3.1.0"
  },
  "private": true
}

解决方案

错误原因是你使用的Firebase Functions v6.x版本已修改Auth事件的API结构,原有的functions.auth.user().onCreate()写法已被废弃,需调整为新的调用方式。

修改后的完整代码:

const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp();

const addUserToDatabase = (event) => {
    // v6版本中,用户信息通过event.data获取
    const userRecord = event.data;
    const uid = userRecord.uid;
    const email = userRecord.email;
  
    return admin.database().ref(`/Users/${uid}`).set({
      email: email,
      permission: false
    });
}

module.exports = {
    addUserToDatabase: functions.auth.onUserCreated(addUserToDatabase),
}

关键修改点:

  1. 将functions.auth.user().onCreate()替换为functions.auth.onUserCreated()
  2. 回调函数参数从直接的userRecord改为event,用户信息需通过event.data获取(v6版本事件结构变化)

修改完成后,重新执行部署命令:

firebase deploy --only functions

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:46:14