Javascript Firebase函数-计划函数不断抛出错误“;“未经验证的”;

Javascript Firebase函数-计划函数不断抛出错误“;“未经验证的”;,javascript,node.js,firebase,google-cloud-platform,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Platform,Google Cloud Functions,我正在制作一个“定时”firebase函数,该函数从外部API源获取数据并将其保存在firestore const functions = require("firebase-functions"); const admin = require("firebase-admin"); const { default: Axios } = require("axios"); admin.initializeApp(); exports.g

我正在制作一个“定时”firebase函数,该函数从外部API源获取数据并将其保存在firestore

const functions = require("firebase-functions");
const admin = require("firebase-admin");
const { default: Axios } = require("axios");
admin.initializeApp();

exports.getIndexData = functions.pubsub.schedule('every 5 minutes').onRun(async() => {

  try {
    const response = await Axios(
      "https://financialmodelingprep.com/api/v3/quotes/index?apikey=myAPIKEY"
    );
    const data = response.data;

    const writeResult = await admin
      .firestore()
      .collection("index")
      .doc("sorted-index")
      .set({ indexData: data,timeStamp:Date.now()});

  } catch (error) {
    console.log(error);
  } 
  return null;

});

这是我的firebase函数代码。当我单独运行该功能时,它工作得非常好,并且我还使用“谷歌云平台云功能测试”对该功能进行了测试。当我单独运行一个函数时,数据在firestore成功设置

然而,当我部署函数时,它不起作用,我认为这是关于预定函数的东西

{
  "insertId": "184t0npf9hhej7",
  "jsonPayload": {
    "pubsubTopic": "projects/my-project/topics/firebase-schedule-getIndexData-us-central1",
    "targetType": "PUB_SUB",
    "status": "UNAUTHENTICATED",
    "jobName": "projects/my-project/locations/us-central1/jobs/firebase-schedule-getIndexData-us-central1",
    "@type": "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished"
  },
  "resource": {
    "type": "cloud_scheduler_job",
    "labels": {
      "job_id": "firebase-schedule-getIndexData-us-central1",
      "project_id": "my-project",
      "location": "us-central1"
    }
  },
  "timestamp": "2020-12-09T08:48:01.142830977Z",
  "severity": "ERROR",
  "logName": "projects/my-project/logs/cloudscheduler.googleapis.com%2Fexecutions",
  "receiveTimestamp": "2020-12-09T08:48:01.142830977Z"
}
所以我一直在搜索这个未经验证的错误,人们说我需要更改一些权限选项。所以我给了allUsers和allAuthenticated用户一个云函数调用器权限。仍然不起作用

对此有什么想法或解决办法吗?谢谢。

您忘记在您的论点中包含“上下文”。


我不知道这是否是您的问题的原因,但您应该只执行
返回null当所有异步工作完成时。具体来说,您应该移动
返回null就在
try()中的
const writeResult=wait admin…
之后。您还应该将其添加到
catch()
中的
console.log()
之后。您能否正确地查看所指示的主题和函数(云调度程序中的日志是否更清楚该问题?)@Juancki不知何故通过使用function.https东西并将google scheduler设置为每5分钟获取一次url,而不是pubsub,获得了相同的结果。但仍然没有和pubsub一起工作。。pubsub继续发送此未经验证的错误代码。“我一直在挖,”雷纳德塔内克说,“我会试试的。”。该函数在google cloud中的测试中运行良好。我今天没有做任何事情就自动修复了它。我对这个答案非常怀疑,因为我没有使用任何参数,Javascript也没有施加任何参数限制。。但它不知怎么为我解决了?我正在使用typescript,并从另一个文件中导出该方法,如下面的
export async function myFunction(context:EventContext){}
.onRun(async (context) => { ... })