Firebase功能始终会因超时而结束

时间:2018-11-29 17:24:04

标签: javascript node.js firebase firebase-cloud-messaging google-cloud-functions

我正在使用firebase函数通过云消息传递创建通知。 但是我总是遇到这个错误:

Function execution took 60006 ms, finished with status: 'timeout'

,但通知有效。

这是我在index.js中使用的代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();


exports.SendNotification = functions.https.onRequest((req, res) => {  

  var payload = {
      notification: {
         title: "this is a test",
         body: req.rawBody.toString('utf8')
      }
  }

  return admin.messaging().sendToTopic("all", payload);

});

我必须执行响应吗?什么时候,我该怎么做?

J3nsis

1 个答案:

答案 0 :(得分:8)

HTTPS触发的Cloud Function在向其调用方发送响应时结束。由于您的代码从不发送响应,因此代码会一直运行直到其配置的超时(默认为1分钟)。

要在函数完成后正确终止函数,请在FCM调用完成后将结果发送回去:

admin.messaging().sendToTopic("all", payload).then(() => {
  res.status(200).send("ok");
}).catch((err) => {
  res.status(500).send(err);
});

我建议阅读文档中的本节: