thierryb
thierryb

Reputation: 3728

TypeError with Firebase Functions Auth Trigger in v6.1.0

I'm trying to set up a Firebase Auth trigger for user deletion using Firebase Functions v6.1.0, but I'm getting a TypeError. Here's my minimal reproduction case:

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
    
});

This produces the 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)

Environment:

firebase-functions: 6.1.0 firebase-admin: 12.7.0 Node.js: 22

I've tried various syntaxes including:

functions.auth.user().beforeDelete functions.identity.beforeUserDeleted functions.auth.userDeleted().onEvent

But none of them work. According to the Firebase documentation, this should be the correct syntax. How can I properly set up an Auth trigger for user deletion in Firebase Functions v6.1.0?

Thanks!

Upvotes: 1

Views: 82

Answers (2)

Slavk&#243; Medvediev
Slavk&#243; Medvediev

Reputation: 1571

As stated in the Auth triggers documentation, firebase functions Gen 2 do not have Auth triggers. They were replaced by identity triggers.
You have 2 options to address this:

  1. Import gen 1 functions as const functions = require('firebase-functions/v1');
  2. Use the beforeUserCreated trigger. See documentation for more details.

Upvotes: 0

Rohit Kharche
Rohit Kharche

Reputation: 2919

As per the Firebase documentations on Trigger a function on user deletion it expects a user variable to be used within the callback function

Which is why you are getting undefined for user.

exports.deleteUser = functions.auth.user().onDelete(async (user) => {
  // ...                                                     
});

Upvotes: 0

Related Questions