【问题标题】:How do I switch apps from the firebase cli?如何从 firebase cli 切换应用程序?
【发布时间】:2016-07-25 18:05:44
【问题描述】:

这看起来应该很容易做到,但不知为何,我被打败了。

我正在尝试使用 firebase-tools CLI 与我的数据库进行交互。我可以毫无问题地登录,当我输入firebase list 时,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序。

我的问题是,我想连接到其他应用程序之一。我正在我的暂存应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我没有找到任何切换到该应用程序的方法。

想法?

【问题讨论】:

  • 如果在列出项目时遇到问题,请使用firebase projects:list

标签: firebase firebase-tools


【解决方案1】:

在这里找到一些有用的信息Firebase CLI Reference

以下代码对我有用。

firebase use <project_id>

【讨论】:

【解决方案2】:

我宁愿使用脚本。考虑这样的项目结构:

your-project
├── .firebaserc
└── functions
   ├── package.json
   └── index.js

转到.firebaserc 并按照下一个示例进行操作

{
  "projects": {
    "default": "project-name",
    "prod": "other-name"
  }
}

然后转到package.json 并添加以下脚本(changeToProdchangeToDev)。

{
  ...
  "scripts": {
    ...
    "changeToProd": "firebase use prod",
    "changeToDev": "firebase use default"
  },
  "dependencies": {
    ...
  },
  ...
}

如果您的 IDE 支持 npm 脚本,您可以使用 IDE UI 运行它们,否则可以使用命令控制台运行它们。确保您位于 functions 文件夹内。

npm run-script changeToProd

您可以通过从终端运行以下命令来验证您当前的项目,或者像我们刚才那样添加到脚本中

firebase use

【讨论】:

  • 欢迎,我的方法旨在与团队的其他成员共享:)
【解决方案3】:

如果你在 windows 上使用 Node.js,你的答案应该是

firebase use <project_id>

但没有 例如

firebase use chat-app-2a150

您可以使用以下代码查看您所有的项目,以便选择正确的项目ID来使用

firebase projects:list

【讨论】:

    【解决方案4】:

    在您运行firebase list 的目录中,将有一个名为firebase.json 的文件。如果您在文本编辑器中打开它,您将在其中看到应用程序名称。您可以在此处更改或删除firebase.json 以更改应用程序。

    或者省去编辑文本文件的麻烦,照 Jason 说的做:使用 firebase init

    【讨论】:

    • 现在有变化吗?因为我在 firebase.json 中找不到应用程序名称,但可以在 .firebaserc....中找到它。感谢您的说明...
    • 项目名现在确实在.firebaserc
    • 可能是错误的,但这似乎并没有切换数据库。部署将部署到“当前”项目,但它似乎仍然从原始数据库中提取数据。如果您要使用它来将生产环境与暂存环境分开,那么该死的危险。希望没有人丢失他们的产品数据。 :(
    • 我遇到了与@Enric 描述的在不同项目中访问默认数据库相同的问题。有什么方法可以检测客户端正在使用什么项目,以便我可以更改配置以适当地初始化应用程序?
    • 确保更改 firebaseConfig ` // 你的网络应用的 Firebase 配置 var firebaseConfig = { apiKey: "api-key", authDomain: "new-project.firebaseapp.com", databaseURL: "https: /new-project.firebaseio.com”,projectId:“new-project-id”,storageBucket:“xxxxxxxxxxx.appspot.com”,messagingSenderId:“xxxxxx”,appId:“xxxxxxxxxx”,measurementId:“xxxxxxxx”}; // 初始化 Firebase`
    【解决方案5】:

    2020:

    官方推荐的方式是使用“别名”:

    在您的 .firebaserc 中,设置不同的项目 ID,如下所示:

    {
      "projects": {
        "production": "my-project-id",
        "testing": "my-testing-project-id"
      }
    }
    // you can also add them interactively with `firebase use --add`
    

    然后在 CLI 中使用 firebase use testingfirebase use production 切换项目。

    注意:切换项目不会创建任何 git diff,它只是在您的本地计算机中记住。使用firebase use 查看当前正在使用哪个项目。

    不常见的情况:

    • 如果您想使用自己的 ID 而不更改项目所有者的 .firebaserc,请按照接受的答案中所述在本地执行 firebase use my-own-id
    • 如果您希望人们分叉您的代码,然后使用他们自己的 ID,请将 .firebaserc 添加到 .gitignore

    【讨论】:

      【解决方案6】:

      你可以只使用命令行开关

      --project=my-firebase-project
      

      【讨论】:

        【解决方案7】:

        添加@cutiko的回答

        package.json

        "scripts": {
        ...
        "prod": "echo \"Switch to Production environment\" && firebase use prod && npm run runtimeconfig",
        "dev": "echo \"Switch to Development environment\" && firebase use default && npm run runtimeconfig"
        ...
        

        npm run runtimeconfig 获取自定义配置环境

        .firebaserc

        {
          "projects": {
            "default":"{project-dev-id}",
            "prod": "{project-prod-id}"
          }
        }
        

        【讨论】:

          【解决方案8】:

          我可能错了,但似乎最初的问题是关于在给定项目中更改应用程序,而不是简单地更改项目。

          这个答案是关于在项目中更改应用程序和 site_ID。

          就我而言,我有一个包含 2 个网络应用程序的项目 (CoolProject):

          • 评估表:form
          • 主站:website

          这两个应用程序都位于本地和 GitHub 中的单独存储库中。

          每个应用都有自己特定的 site_ID:

          • 表格:coolproject-form[.web.app]
          • 网址:coolproject-website[.web.app]

          我首先设置了form 应用程序并毫无问题地部署到coolproject-form。但是,当我创建web 应用程序(以及关联的coolproject-website site_ID)并尝试使用firebase deploy --only hostingfirebase deploy --only hosting:website 部署它时,它错误地将其部署到coolproject-form 覆盖form 应用程序。

          这就是我最终解决问题的方法(基于Firebase documentation):

          1. 检查两个应用程序和相应的 site_ID 是否设置正确:
          firebase apps:list
          
          firebase hosting:sites:list
          
          1. 为托管设置 website 部署目标(通过 .firebaserc
          firebase target:apply hosting website coolproject-website
          
          1. 更新firebase.json(用于website 应用):
          ...
          "hosting": [{
              "target": "website",
              "public": "build",
              "ignore": [
                "firebase.json",
                "**/.*",
                "**/node_modules/**"
              ],
              "rewrites": [
                {
                  "source": "**",
                  "destination": "/index.html"
                }
              ]
            }],
          ...
          
          1. 部署
          firebase deploy --only hosting
          

          有了这个website 应用程序现在正确部署到coolproject-website.web.app

          【讨论】:

            【解决方案9】:

            要更改 firebase 应用程序目标项目,您可以输入 "firebase use myProjectName" 。我还使用上述答案“firebase list”来检查我有什么项目 (使用 Angular 7 应用程序在 Firebase cli 7.4 中为我工作)

            【讨论】:

              猜你喜欢
              • 2014-11-10
              • 2019-06-08
              • 1970-01-01
              • 2022-12-13
              • 2010-11-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多