云函数被调用两次,第一次有主体,第二次没有

Cloud functions are getting called two times, first time with body and second time without

我的 index.ts 有:

exports.foo = functions.https.onCall(async (data, context) => {
  console.log('Hello World');
  return null;
});

要部署,我 运行:

firebase deploy --only functions:foo

为了测试,我这样做:

final callable = FirebaseFunctions.instance.httpsCallable('foo');
await callable.call();

第一次 function execution started 时,我的函数体 运行s,但是第二次(不知道它是如何被调用的),我的函数体没有 运行.这是标准行为吗,我是否还要为 自动 第二次调用付费?

注意:在问这个问题之前,我已经阅读了几篇文章,例如 , this, , 等,但其中 none 似乎对我有用。

我不知道 flutter,但你 运行 它“就像你在浏览器中一样”。此外,按下按钮通常会提交一些内容(我的意思是,大多数时候这不是 GET 请求)。

因此,综合考虑您的问题和您的问题,我想到了 preflight request。在执行处理之前检查 HTTP 动词。

我已经看到并 more-or-less 记录了这个;例如,最近一些“最小实例数=1”函数似乎每天start-up 和运行 几次,但函数本身并没有被调用。我在部署时也看到了这一点(我使用了一些一次部署多个功能的自定义代码)。

“冷启动”的工作方式是他们必须 运行 函数文件一次以查找并分配其中的“函数”。这部分曾经运行默不作声。如果 Google 返回不记录它,或者在日志中区分它,那就太好了。