错误:[functionName(us-central1)] 不允许从可调用函数更改为 HTTPS 函数。请删除您的函数并创建一个新函数。
如有任何建议和见解,我们将不胜感激。
您使用的是哪个版本的 Firebase CLI (
firebase --version
)?昨晚我将 firebase-tools
包更新到 10.3.0,功能部署开始给我你提到的错误。我降级到 10.2.2,功能部署开始像以前一样工作。
更新: Firebase 团队确认 10.3.0 firebase-tools 存在问题。他们正在努力修复: https://github.com/firebase/firebase-tools/issues/4307
解决方案01:
我认为主要问题在于您是否使用有效的方法来使用 .env 文件。因为我最近才遇到这种错误。如果您确实在文件夹结构中使用 .env 文件,那么
process.env.VARIABLE_NAME
的文件中声明.env文件的路径。示例方式是这样的:
require("dotenv").config({path: "../.env"});
firebase deploy --only functions
我添加了 .env 文件的路径,因为我检查了 Firebase Cloud Function Logs,它给了我所有使用
process.env.VARIABLE_NAME
的云函数的错误。此 .env 文件必须位于根项目内并放置在文件夹 functions/
内。试一试。希望它有效。
解决方案编号2:
您应该检查是否存在不提供返回值的变量或函数,如下例所示:
const key = async () => {
const response = await pk.accessSecret("PRIVATEKEY");
return response;
};
不允许从可调用函数更改为 HTTPS 函数。 请删除您的函数并创建一个新函数。
这也发生在我身上。
npm i -g firebase-tools@latest
成功了。
请仔细检查ServiceKey部分和DatabaseURL。如果您重复使用其他 Firebase 项目中的脚本,您可能会忘记相应地更改它们。
const serviceAccount = require("./serviceAccountKey.json");
const adminAuth = admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://hello-world.firebaseio.com",
});
然后请从 Web 控制台(firebase 或 google cloud)中删除该函数并...... firebase deploy --only 函数
如果不能,请再次尝试删除函数文件夹中的 package--lock.json
希望这有帮助