【问题标题】:Can not see the Firebase function deployed看不到已部署的 Firebase 功能
【发布时间】:2017-08-18 14:41:30
【问题描述】:

我按照以下步骤操作:

  1. Firebase CLI(命令行界面)需要 Node.js 和 npm,您可以按照 https://nodejs.org/ 上的说明进行安装

    • 安装 Node.js 也会安装 npm
  2. 安装 Node.js 和 npm 后,通过 npm 安装 Firebase CLI:
    npm install -g firebase-tools

    • 这将安装全局可用的 firebase 命令。要更新到最新版本,请重新运行相同的命令
  3. 初始化您的项目:
    一种。运行firebase login通过浏览器登录并验证firebase工具。

    b.转到您的 Firebase 项目目录或创建目录

    c。运行 firebase 初始化函数

    • 该工具为您提供了使用 npm 安装依赖项的选项。如果您想以其他方式管理依赖项,可以安全地拒绝。
  4. 选择关联的 Firebase 项目

  5. 选择Y 使用 npm 安装依赖项

  6. 移至目录设置 firebase 函数

  7. 使用您创建的函数编辑index.js 文件

  8. 运行 firebase use --add 以添加您的 Firebase 项目

  9. 运行firebase deploy --only functions部署函数

在这一切之后,我在部署完成时在终端中收到消息,但在 Firebase 控制台中,当我单击“功能”选项卡时,没有列出任何功能!?

【问题讨论】:

  • 您解决了这个问题吗?如果您发布您的实际 index.js,我可能会提供帮助。
  • 我遇到了同样的问题,这里还没有解决方案..
  • 我遇到了同样的问题并找到了解决方法。它可能并不完美,但目前是一个解决方案:您可以从 Google Cloud Console 访问 Firebase 云功能
  • 嘿@Dimitri。检查我对这个问题的回答。
  • 在部署之前,我必须确保在包含所有源文件(多个)的目录中运行“npm run-script build”,firebase 似乎是从带有转译源的 /lib 文件夹部署的。我稍后将此 npm 命令添加到我的 firebase.json 文件中以用于“预部署”命令。

标签: firebase firebase-console google-cloud-functions


【解决方案1】:

快速提示:确保您将尝试部署的函数导出到 index.js 文件中。您的 firebase 项目将部署,但 Cloud Functions 将不可用,除非它们被导出。

【讨论】:

  • 这有效,使用 exports = ...modules.exports = { ... }
【解决方案2】:

确保在取消注释默认功能后保存文件,然后使用

firebase deploy

【讨论】:

  • 函数已导出,并且 index.js 存在于函数文件夹中。但是,我使用 Visual Studio Code 编辑 index.js 并且我最后的更改没有保存。保存文件并重新部署后。效果很好。
  • “确保保存文件”。我这样做才 20 年……是的,我忘了保存文件!大声笑
【解决方案3】:

对于 Cloud Functions,需要将您的函数添加到特殊的导出对象中(这是 Node 使函数可以在当前文件之外访问的方式) 确保在你的函数目录中有 index.js:

函数示例:

// Import the Firebase SDK for Google Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();



// Your function declaration. Example of a fired function when a user is created in Auth feature.
exports.myFunction = functions.auth.user().onCreate(async (user) => {
// ... your code here.
});

然后按照以下步骤进行部署:

  • 首先,如果未完成,请确保已安装 firebase-tools: $ npm install -g firebase-tools
  • 并初始化:$ firebase init

  • 对于完全部署: $ firebase 部署

  • OR 用于功能部署 $ firebase deploy --only 函数
  • 或部署特定功能 $ firebase deploy --only functions:function1,functions:function2

一个很好的例子:https://codelabs.developers.google.com/codelabs/firebase-cloud-functions/#7

【讨论】:

    【解决方案4】:

    我最近遇到了同样的问题,同时执行 Actions on Google Node.js Client Library Version 1 Migration Guide.Node.js Client Library V2(我强烈推荐)我花了一段时间才弄清楚什么是什么正在发生。在我无法真正弄清楚问题是什么!所以这就是我所做的,它对我有用:

    1. 确保您有云功能 (index.js) 的备份副本,也许还有您的 package.json(以防万一您不想记住以前的软件包已安装 - 有时可能很烦人)。

    2. 删除整个functions目录从您的项目文件夹中。

    3. 使用 firebase init 重新启动 firebase CLI 并选择 Functions

    4. 在您的云函数初始化后,将 CD 放入函数文件夹并使用firebase deploy --only functions重新部署它。

    5. 如果一切顺利顺利?,您现在应该会看到您的函数已部署在 firebase 仪表板控制台上。

    注:Google 最近于 2018 年 4 月 16 日发布了 Node.js Client Library version 2 (v2),其中包含许多新功能。 2018 年 4 月 16 日之后,Google 上的Actions 新功能不再添加到客户端库的 v1。如果您想使用新功能,您必须迁移到 v2 客户端库

    此外,v1 客户端库不支持 Dialogflow v2。如果您需要 Dialogflow v2 功能,还需要迁移到客户端库的 v2。

    希望这会有所帮助?。

    【讨论】:

    • 这解决了我的问题。感谢 google 让我浪费了我短暂的 2 个小时
    【解决方案5】:

    在第 7 步中,您必须取消注释其中的示例函数并保存文件。然后,在 deploy 命令的输出中,您将获得创建的 helloWorld 函数的 url。

    【讨论】:

      【解决方案6】:

      确保您运行的版本至少为 3.5.0firebase-tools。要检查您拥有的版本,请运行:

      firebase --version
      

      如果您正在运行默认设置,您可以使用以下命令更新 firebase-tools

      npm install -g firebase-tools
      

      【讨论】:

        【解决方案7】:

        我遇到了完全相同的问题,我通过确保包含我所有函数的 index.js 文件保存在项目文件夹内的“functions”文件夹中来解决它。我正在使用 vs 代码,所以我只需单击文件/另存为并选择正确的文件夹。

        【讨论】:

          【解决方案8】:

          有同样的情况。问题是当我在做的时候

          $ firebase deploy --only "myFunction" 
          

          那个过滤器名称:myFunction,与我尝试部署的函数的名称不完全相同。愚蠢的错误,但我花了一天时间才意识到......

          【讨论】:

            【解决方案9】:

            @Learn2Code 我有完全相同的问题。 确保在 index.js 文件中,在初始化应用程序之前导出函数。

            现在,继续从您的项目目录运行firebase deploy

            例如:

            // Take the text parameter passed to this HTTP endpoint and insert it into the
            // Realtime Database under the path /messages/:pushId/original
            exports.addMessage = functions.https.onRequest(async (req, res) => {
                // Grab the text parameter.
                const original = req.query.text;
                // Push the new message into the Realtime Database using the Firebase Admin SDK.
                const snapshot = await admin.database().ref('/messages').push({original: original});
                // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
                res.redirect(303, snapshot.ref.toString());
              });
            
            const admin = require('firebase-admin');
            admin.initializeApp();
            

            【讨论】:

            • +1 const admin = require('firebase-admin'); admin.initializeApp();
            【解决方案10】:

            为了澄清一个问题 - 您在 functions 文件夹中的 index.js 文件似乎必须导出在同一文件中创建的函数(类似于 Fran 所说的)。

            似乎试图将您的文件组织到子文件夹中无法与 Firebase 函数正常工作 - 同样的规则适用于使用 firebase serve 进行本地测试(必须在 functions/index.js 内创建代码)。

            希望这对某人有所帮助!

            【讨论】:

              【解决方案11】:

              1) 确保您正在导出您尝试在 index.js 文件中部署的函数。

              2) 在文件 (index.js) 的顶部写上“use-strict”,然后使用控制台部署你的函数

              【讨论】:

                【解决方案12】:

                在 firebase init 中检查您的“默认项目”。选择一个具有相似名称的人是我的错误。 ;)

                【讨论】:

                  【解决方案13】:

                  使用 firebase projects:listfirebase use <project> 确保 Firebase CLI 的“当前项目”设置正确,无论您在哪个文件夹中。

                  例子:

                  > firebase projects:list
                    ✔ Preparing the list of your Firebase projects
                    ┌──────────────────────┬─────────────────────┬──────────────────────┐
                    │ Project Display Name │ Project ID          │ Resource Location ID │
                    ├──────────────────────┼─────────────────────┼──────────────────────┤
                    │ alpha                │ alpha     (current) │ [Not specified]      │
                    ├──────────────────────┼─────────────────────┼──────────────────────┤
                    │ beta                 │ beta                │ [Not specified]      │
                    └──────────────────────┴─────────────────────┴──────────────────────┘
                  
                    2 project(s) total.
                  
                  > firebase use beta
                    Now using project beta
                  

                  【讨论】:

                    【解决方案14】:

                    我也有这个错误。我从以前的项目中复制了一个在 Google Cloud Functions 上运行的工作函数,但无法弄清楚为什么它在部署后不会显示。

                    我需要将我的函数包装在 functions.https.onRequest() 中,这在普通云函数中是不需要的。

                    【讨论】:

                      【解决方案15】:

                      有同样的问题。

                      在我的情况下,通过使用 firebase deploy 解决了任何 --only,这显示了更好的错误消息,我必须在 Cloud Console 中为该项目设置结算。设置例程可以通过在控制台中选择可能功能来触发。

                      我遇到了另一个问题,即项目中缺少服务帐户,因此我首先通过控制台设置了一个新项目,然后将其添加到 Firebase。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2017-08-14
                        • 1970-01-01
                        • 2020-10-23
                        • 1970-01-01
                        • 2018-03-31
                        • 2020-05-07
                        • 1970-01-01
                        • 2019-07-04
                        相关资源
                        最近更新 更多