【发布时间】:2021-01-30 14:53:21
【问题描述】:
我正在尝试部署 pubsub 函数来运行我的 Firestore 数据库的计划备份,但它不会部署,我不知道为什么这不起作用。
这是具有重现此行为的功能的最小打字稿文件:
import * as functions from "firebase-functions";
import * as key from "../key.json";
export const backupFirestore = functions.pubsub
.schedule("0 22 * * *")
.timeZone("America/Los_Angeles")
.onRun(async (context) => {
const pk = key.private_key;
console.log(pk);
});
在我的 index.ts 文件中,我将函数导出如下:
export { backupFirestore } from "./firestore_backup";
最后,这是我的 firebase.json:
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
],
"source": "functions"
}
}
我执行firebase deploy --only "functions:backupFirestore",一切看起来都很好,打字稿 lint 和编译器运行没有错误。但是部署过程抛出如下错误:
函数:指定了以下过滤器,但与项目中的任何函数都不匹配:backupFirestore
我也试过运行firebase deploy --only functions,没有报错,但还是没有部署函数。
这正是我为所有其他函数所做的,但不知何故,对于 pubsub 函数它失败了。这个问题让我很震惊,我找不到任何现有的解决方案。
任何建议将不胜感激!
【问题讨论】:
-
请编辑问题以显示任何人都可以用来重现问题的complete, minimal code。不要编辑太多,以至于我们不得不猜测如何复制。
-
感谢@DougStevenson 的指点和道歉。我添加了完整的代码。
-
清理工作区中的 lib 文件夹,然后尝试重建源代码,然后在部署之前手动检查 lib 文件夹中的函数是否存在
-
你是说 index.ts 只包含那个导出行?
-
为了创建一个 minimal 示例,最好去掉不相关的代码,在最小状态下对其进行测试,然后显示结果。换句话说:你能想出的最少代码量是多少?
标签: typescript firebase google-cloud-functions google-cloud-pubsub