【问题标题】:Fire-base Cloud Function deploy completed without any error, but Cloud Function doesn't exist in FirebaseFire-base Cloud Function 部署完成且没有任何错误,但 Firebase 中不存在 Cloud Function
【发布时间】:2020-02-25 19:46:11
【问题描述】:

我有一个问题,当我部署 JavaScript Cloud Function 时,它说部署完成,但是当我去 Firebase 并检查它时它不存在。奇怪的是,对于 TypeScript Cloud Function,它可以正常工作。

我通过原始 Firebase 视频教程完成了所有准备工作,例如安装 firebase-tools 等。我尝试只部署未注释的 hello world 功能,但结果相同。

我也多次尝试重新启动 Firebase,甚至重新安装 node 和 Firebase 工具,但还是一样。您可以在屏幕截图中看到,在本地模拟也不起作用。

我将附上 index.js 的屏幕截图,左边是项目结构,firebase.json,在 cmd 中部署和模拟消息。

index.js:

firebase.json:

在 cmd 中部署:

在 cmd 中模拟:

编辑: 当我使用指定的功能进行部署时,出现了:

使用指定功能进行部署:

当我使用空的 firebase.json 部署时:

使用空的 firebase.json 进行部署:

按照以下建议使用 firebase.json 进行部署:

很抱歉发布图片,但代码格式不适合我。

【问题讨论】:

  • 在 Stack Overflow 上,最好将代码文本复制到问题本身,而不是显示屏幕截图。
  • 您能否确认您正在 Firebase 控制台上查看正确的项目?很容易看到另一个项目而没有意识到。

标签: javascript firebase deployment google-cloud-firestore google-cloud-functions


【解决方案1】:

您并没有真正部署您的功能。

您看,每当您部署新功能时,CLI 都会显示以下消息。

=== Deploying to '<PROJECT-ID>'...

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (26.61 KB) for uploading
✔  functions: functions folder uploaded successfully
i  functions: creating Node.js 8 function <FUNCTION-NAME>(us-central1)...
✔  functions[<FUNCTION-NAME>(us-central1)]: Successful create operation. 
Function URL (<FUNCTION-NAME>): https://us-central1-<PROJECT-ID>.cloudfunctions.net/<FUNCTION-NAME>

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/<PROJECT-ID>/overview

在您的屏幕截图中,您没有收到 Successful 消息。

您能否尝试使用空 json 作为 firebase.json 文件部署您的函数?

确保在项目的根文件夹中运行firebase deploy --only functions:&lt;FUNCTION_NAME&gt;。这样,您就是在告诉 CLI 部署特定功能,在本例中为 helloWorld

如果您没有再次看到 成功 消息,请在此处发布结果以尝试使其正常工作。

编辑。

尝试将您的 firebase.json 更改为

{ 
    "functions":{ 
        "source": "functions/",
         "predeploy": [
             "npm --prefix \"$RESOURCE_DIR\" run lint",
             "npm --prefix \"$RESOURCE_DIR\" run build"
         ]
    }
}

然后再次部署。

【讨论】:

  • 按照您的建议完成后,我用屏幕截图编辑了帖子
  • 我在原始答案中添加了一些额外的东西来尝试。
  • 我遇到了另一个错误,但现在不同了,在帖子中发布了屏幕截图。我认为这只是我的电脑出了点问题:D