Atlas Function with firebase-admin dependency failing to send push notification

Hi there,

I have a SwiftUI app with Realm. I set up Firebase Messaging on the client code.

I’m trying to send a push notification to an iOS client from an Atlas Function.

I added ‘firebase-admin’ dependency.

Here’s the function:

async function sendPushNotification(token, title, body) {
  const admin = require('firebase-admin');
  
  const credentials = {
    projectId: '<project id>',
    clientEmail: '<client email>',
    privateKey: '<private key>',
  };

  admin.initializeApp({
   credential: admin.credential.cert(credentials)
 });
 
 const message = {
    notification:{
      body: body,
      title: title
    },
    token: token
  };

  try {
    await admin.messaging().send(message);
    console.log('Notification sent successfully');
  } catch (error) {
    console.error('Error sending notification:', error);
  }
}

I get the error: Error sending notification: FunctionError: TypeError: Value is not an object: undefined

Any ideas why this is happening?

I printed admin, admin.messaging(), and admin.messaging.send - they’re all fine (not undefined).
I also printed message, message.notification, message.token - also fine (not undefined).
And I tried to change the message’s notification object name to “data” - didn’t help.

Provide full error log which shows line numbers etc.

The only log printed (via Atlas Logs) is

Error:
Error sending notification: FunctionError: TypeError: Value is not an object: undefined

I’m using Atlas Function Editor, and I can tell based on debugging that the line where it fails is
await admin.messaging().send(message);

Hello, were you able to solve this i am running into this issue as well

hi, i have the same error:

> error logs: 
Error sending notification: FunctionError: TypeError: Value is not an object: undefined

how did you solve this?

hi i found this workaround, download firebase-admin version 10.0.0

npm install firebase-admin@^10.0.0

Hey All, we had the same issue for sendMultiCast. Apparently Firebase deprecated in mid september the legacy support and is forcing the usage of new api which doesn’t support /batch that was used.

Installing the latest versions (12.4) does not work on the realm environment due to lack of full support for promises and the new jsonwebtokens npm package.

I created a customer version that works for the sendMultiCast (which can support sending ofc to a single token by providing an array with a single target token)