如何在组和区域中部署单个 Firebase 云函数?

How can I deploy a single Firebase Cloud Function in a group and a region?

我创建了一组部署在区域 (europe-west1) 中的 Firebase Cloud Functions (v2)。

#index.ts
import * as apiV2 from './v2';
export const v2 = apiV2;
#v2.ts
export const addTextMessage = functions.region('europe-west1').onCall(
 ...
)

我只想部署 addTextMessage 函数。 我试过了:

firebase deploy --only functions:v2-addTextMessage
# or
firebase deploy --only "functions:v2-addTextMessage(europe-west1)"

但是函数没有部署:

✔  functions: functions folder uploaded successfully
i  functions: current functions in project: v2-addTextMessage(europe-west1)
⚠  functions: the following filters were specified but do not match any functions in the project: v2-addTextMessage(europe-west1)

我应该使用什么命令?

您使用了正确的命令,但是,您没有将 addTextMessage 函数导出到 index.ts 文件,否则部署将无法找到要部署的函数。您可以通过将以下代码添加到 index.ts:

来导出它
export const v2-addTextMessage = apiV2.addTextMessage

此外,您不能将函数参数和函数名称用作字符串。所以你在这种情况下的命令必须是:

firebase deploy --only functions:v2-addTextMessage

对于在部署时指定区域,由于您已经将问题的编辑版本添加到代码中,因此您不能在 FirebaseCLI 命令上执行此操作,感谢@Doug Stevenson 在评论部分指出了这一点。

理想情况下,正如您在此 video 上看到的那样,您必须在部署之前通过添加以下内容在云函数代码中指定:

exports.v2-addTextMessage = functions
    .region('europe-west1')
    .storage.object().onFinalize((object) => { });

尝试将“-”替换为“.”。

你应该使用:

firebase deploy --only functions:groupName.functionName

你的情况:

firebase deploy --only functions:v2.addTextMessage

CLI 终端日志确实具有误导性,因为如果您超出了部署配额并且 CLI 检测到您的函数名称是 v2-addTextMessage(europe-west-1),它会打印一条消息建议您使用命令 firebase deploy --only functions:v2-addTextMessage 仅部署此功能,这不起作用。

查看完整内容Firebase CLI documentation here