如何从 firebase cli 切换应用程序?

Posted

技术标签:

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

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

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

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

想法?

【问题讨论】:

如果在列出项目时遇到问题,请使用firebase projects:list 【参考方案1】:

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

以下代码对我有用。

firebase use <project_id>

【讨论】:

firebase.googleblog.com/2016/07/… - 快速参考【参考方案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):

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

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

【讨论】:

【参考方案9】:

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

【讨论】:

以上是关于如何从 firebase cli 切换应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

从深层链接启动应用程序时未调用 AppDelegate ContinueUserActivity,应归咎于 Firebase SDK

我可以完全从 CLI 或脚本创建和配置 GCP 项目 + Firebase 吗?

Firebase 部署找不到 firebase.json

我应该如何配置我的应用以跨类保留 Firebase 用户数据?

如何根据位置从“回收”视图中删除Firebase数据库密钥

如何从 Firebase 中删除托管网站