【问题标题】:Firebase Cloud Functions "admin.messaging(...).send is not a function"Firebase 云函数“admin.messaging(...).send 不是函数”
【发布时间】:2018-03-05 22:50:41
【问题描述】:

我在 Firebase Functions 服务中有一个发送任何 FCM 的函数。 我会使用 admin.messaging().send() 函数,例如this reference guide,但在触发函数时出现此错误,而不是在部署期间:

TypeError: admin.messaging(...).send is not a function
   at exports.sendChatNotification.functions.database.ref.onCreate.event (/user_code/lib/index.js:113:30)
   at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27)
   at next (native)
   at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
   at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
   at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36)
   at /var/tmp/worker/worker.js:700:26
   at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我可以在 Functions->Log in Firebase 控制台中看到此错误。
这是我的功能代码:

 exports.sendChatNotification = functions.database.ref('/messages').onCreate(event => {

 var message = {
    data: {
        title: 'title',
        body: 'body',
    },
    apns: {
        header: {
            'apns-priority': '10',
            'apns-expiration':'0'
          },
        payload: {
            aps: {
                sound: 'default',
                'content-available':'1'
              }
        }
    },
    android: {
        ttl: 60*1000,
        priority: 'high'
      },
    topic: 'mytopic'
};

return admin.messaging().send(message);

});

如果我使用 admin.messaging().sendToTopic() 并且(更改消息结构)它可以正常工作。 Firebase 似乎不支持自己的 API。

我使用 Firebase 工具和命令行“firebase deploy”来部署它。
我在我的函数项目中更新了 firebase-tools 和 firebase-functions 和 firebase-admin。

【问题讨论】:

  • 您的错误消息显示“sendChatNotitifcation”有问题,但您正在显示“sendMessage”的代码。请确保您在此处获得所有正确信息。另请说明您使用的是哪个版本的 firebase-admin。
  • 我更正了问题,第一行是我手写的.....功能相同。
  • 另外请说明您使用的是哪个版本的 firebase-admin,
  • 我在这个问题之前更新了它...."firebase-admin": "~5.4.2" (from package.json)

标签: firebase firebase-cloud-messaging google-cloud-functions firebase-admin


【解决方案1】:

在 firebase-admin 5.9.0 中添加了 send() 函数。如果你想使用它,你应该在你的functions文件夹中运行npm install firebase-admin@latest来安装最新版本。在撰写本文时,最新版本是 5.9.1。

【讨论】:

  • 我现在有这个错误,当部署时:错误解析触发器:找不到模块'node-forge'
  • 我已经安装它调用(在函数文件夹中):npm install node-forge
  • @PeterHaddad 这不相关。使用 -g 运行该命令会告诉 npm 全局安装 firebase-admin 软件包,以便您可以在命令行上使用 firebase。不带 -g 运行告诉 npm 只更新当前项目文件夹,这只会影响你部署的代码。全局安装的模块不属于 Firebase 项目部署。
  • @DougStevenson 我从 cli 运行 npm install firebase-admin@latest。它现在看起来是最新版本,但我遇到了同样的错误。你有什么建议吗?
  • 我有同样的问题:运行此命令并不能修复错误。
猜你喜欢
  • 2018-08-13
  • 2018-07-31
  • 1970-01-01
  • 2022-11-21
  • 2020-11-05
  • 2017-10-07
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多