我想尝试将我的v1云功能升级到v2。
本来这是我的职能
import * as functions from "firebase-functions";
const express = require("express");
const app = express();
app.post(...);
exports.functionName = functions.region("asia-southeast2").https.onRequest(app);
现在我正在将其升级到v2。由于 v2 函数名不能包含任何大写字母,所以我将其更改为 ["function-name"]
import * as functions from "firebase-functions/v2";
const express = require("express");
const app = express();
app.post(...);
exports["function-name"] = functions.https.onRequest({region: "asia-southeast2"}, app);
部署时,我收到此错误。我完全不知道这是什么意思,很混乱。
i 函数:创建 Node.js 16(第二代)函数 on-function:function-name(asia-southeast2)...无法创建或 更新 Cloud Run 服务函数名称,容器运行状况检查失败。 修订版“function-name-00001-taz”尚未准备就绪,无法提供服务 交通。用户提供的容器无法启动并侦听 由 PORT=8080 环境变量提供的端口定义。日志为 此修订版可能包含更多信息。
日志网址: https://console.cloud.google.com/logs/viewer?xxxxxxxx 有关更多故障排除指南,请参阅 https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start
从上述链接打开日志资源管理器,我收到此消息
Function 'function.name' is not defined in the provided module.
Did you specify the correct target function to execute?
Could not load the function, shutting down.
如何将我当前的v1云功能升级到v2?
我按照文档重现了确切的问题。首先我成功部署了第一代云功能。后来,在尝试部署函数名称为
function-name
的第二代函数时,我遇到了同样的问题。但我能够成功部署名为 functionname
或 function_name
的函数。这可能是由于 firebase 函数中使用连字符 (-) 的错误造成的。所以我建议您使用小写或下划线的名称。
示例:
exports.function_name = functions.https.onRequest({region: "asia-southeast2"}, app);
或者
exports.functionname = functions.https.onRequest({region: "asia-southeast2"}, app);
也可以随时在 公共问题跟踪器中提出错误。