【发布时间】:2022-07-25 05:30:39
【问题描述】:
我正在从 NodeJS 服务器开发 Firebase 云消息传递到我的 Android。
从 FCM 控制台页面接收通知成功。
我使用 FCM Docs 实现了服务器代码。 (https://firebase.google.com/docs/admin/setup)
但在运行时出现错误:
[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)
我的代码中没有“getProvider”。
我用谷歌搜索并尝试了替代代码
但它仍然无法正常工作。
这是我的代码。
...
// 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');
});
【问题讨论】:
-
当出现错误消息时,还应该有一个堆栈跟踪显示错误的哪里。您能查一下并将其添加到您的问题中吗?
-
@FrankvanPuffelen 是的,现在更新了。
标签: node.js firebase-cloud-messaging undefined