'Cannot read properties of undefined (reading 'getProvider') in Firebase on NodeJS
I am developping Firebase Cloud Messaging to my Android from NodeJS server.
Receiving notifications from the FCM console page was successful.
And I implemented server code with FCM Docs. (https://firebase.google.com/docs/admin/setup)
But at runtime I get an error :
[0] TypeError: Cannot read properties of undefined (reading 'getProvider')
[0] at Object._getProvider (/Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/@firebase/app/dist/index.cjs.js:274:26)
[0] at getMessagingInSw (/Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/@firebase/messaging/dist/index.sw.cjs:1522:16)
[0] at sendPushNotification (/Users/scmoon/Desktop/work/CheckRefrigerator/server/routes/product.js:86:5)
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/server/routes/product.js:54:9
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/mongoose/lib/model.js:4616:16
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/mongoose/lib/utils.js:264:16
[0] at model.<anonymous> (/Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/mongoose/lib/model.js:472:7)
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/kareem/index.js:315:21
[0] at next (/Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/kareem/index.js:209:27)
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/kareem/index.js:182:9
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/kareem/index.js:507:38
[0] at processTicksAndRejections (node:internal/process/task_queues:78:11)
[0] Emitted 'error' event on Function instance at:
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/mongoose/lib/model.js:4618:13
[0] at /Users/scmoon/Desktop/work/CheckRefrigerator/node_modules/mongoose/lib/utils.js:264:16
[0] [... lines matching original stack trace ...]
[0] at processTicksAndRejections (node:internal/process/task_queues:78:11)
There is no 'getProvider' in my code.
I did googling and tried alternative codes
but it still not working.
here is my code.
...
// const { initializeApp } = require('firebase-admin/app');
// const fbapp = initializeApp();
//const { getMessaging } = require("firebase/messaging");
const { getMessaging } = require("firebase/messaging/sw");
const admin = require("firebase-admin");
const serviceAccount = require('../../server/firebase-adminsdk-asdf.json');
const fbapp = admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const registrationTokens = [
'ePBbqfWEQ7yaj5Zjxera98...',
// …
];
const message = {
notification: { title: req_body.writer, body: req_body.title },
tokens: registrationTokens,
};
getMessaging(fbapp)
// .sendMulticast(message)
.sendAll([message])
.then((response) => {
console.log(response.successCount + ' messages were sent successfully');
});
Solution 1:[1]
Not a firebase expert but it seems that sendAll messages expect a token property without a s while sendMulticast accepts tokens.
Which actually makes sense after reading the docs:
tokento send each message to 1 targettokensto send each message to n targets
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
