【问题标题】:Cannot read properties of undefined (reading 'getProvider') in Firebase on NodeJS无法在 NodeJS 上的 Firebase 中读取未定义的属性(读取“getProvider”)
【发布时间】: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


【解决方案1】:

不是 firebase 专家,但似乎 sendAll 消息需要一个没有 s 的 token 属性,而 sendMulticast 接受 tokens。 阅读文档后,这实际上是有道理的:

  • token 将每条消息发送到 1 个目标
  • tokens 将每条消息发送到 n 个目标

【讨论】:

    【解决方案2】:

    您好,我遇到了与此类似的问题。你找到解决这个问题的办法了吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2022-11-29
    • 2023-02-17
    • 2021-12-23
    • 2021-10-20
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多