即使未将函数从 onCallable 更改为 onRequest,Firebase 部署也会失败

问题描述 投票:0回答:4

错误:[functionName(us-central1)] 不允许从可调用函数更改为 HTTPS 函数。请删除您的函数并创建一个新函数。

如有任何建议和见解,我们将不胜感激。

firebase deployment google-cloud-functions
4个回答
10
投票

您使用的是哪个版本的 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


1
投票

解决方案01:
我认为主要问题在于您是否使用有效的方法来使用 .env 文件。因为我最近才遇到这种错误。如果您确实在文件夹结构中使用 .env 文件,那么

  • 您需要在所有使用
    process.env.VARIABLE_NAME
    的文件中声明.env文件的路径。示例方式是这样的:
    require("dotenv").config({path: "../.env"});
  • 之后尝试删除 Google Cloud Console 中所有现有的 Cloud Functions
  • 再次尝试部署:
    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;
};


我忘记添加变量 const key 的返回值。因此,我在我的所有函数中都遇到了很多像您一样的错误。该错误会导致 firebase cli 声明“

不允许从可调用函数更改为 HTTPS 函数。 请删除您的函数并创建一个新函数。


0
投票

这也发生在我身上。

npm i -g firebase-tools@latest
成功了。


0
投票

请仔细检查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

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.