当我尝试部署新创建的 Firebase PubSub 函数时,出现错误 Error: Failed to create scheduler job projects/workouts-uat/locations/europe-west1/jobs/firebase-schedule-dailyTasks-eur3 : HTTP 错误: 400,时间表或时区无效。
我的函数声明如下:
exports.dailyTasks = functions
.region('europe-west2')
.pubsub
.schedule('every 24 hours 00:00')
.timeZone('Africa/Johannesburg')
.onRun(...);
根据我的研究,我发现使用的区域应该与项目设置中找到的区域相同,在我的例子中是 eur3 (europe-west)
。我所有现有的 onCall
函数都使用 europe-west2
这就是为什么我首先尝试使用它,但在找到我的项目设置区域后我更新为 .region( 'eur3')
和 .region('europe-west')
,但错误仍然存在。那么如何成功部署这个功能呢?
我在谷歌搜索错误时遇到的另一个提示是,必须创建“Google App Engine (GAE) 应用程序”才能使 pubsub 函数正常工作,但我假设这会在函数部署时自动发生,对吧?否则如何创造它?我对 GCP 的经验为零。
最佳答案
我终于明白了。它与 .timeZone()
无关,正如我最初认为的那样 - 这是 .schedule()
的错误。是的,我刚刚看到错误消息确实包括可能是“时间表或时区”的可能性,但出于某种原因,我认为它指的是整个功能而不是.schedule()
调用。
无论如何,一旦我将每 24 小时 00:00
更新为每天 00:00
,它突然部署得很好。为清楚起见,这是我的工作函数签名现在的样子:
exports.dailyTasks = functions
.region('europe-west2')
.pubsub
.schedule('every day 00:00')
.timeZone('Africa/Johannesburg')
事实证明,.region()
也与它无关,europe-west2
工作得很好。
我要感谢 this 的作者文章,因为他链接了一个每天午夜也调用 pubsub 函数的示例项目,如果没有这篇文章,我永远找不到答案。
关于javascript - Firebase pubsub 函数计划无效的计划或时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67079859/