我怎么把应用程序从消防站切换过来?

这似乎是件很容易做到的事,但不知道为什么,我被打败了。

我正在尝试使用消防工具 CLI 与我的数据库进行交互。我能够登录没有任何麻烦,当我输入 firebase list,我得到一个列表,所有我目前的应用程序。它还能告诉我当前连接的是哪个应用程序。

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

有什么想法吗?

88143 次浏览

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

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

在这里找到了一些有用的信息。

下面的代码适合我。

firebase use <project_id>

我更喜欢使用脚本:

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

您可以只使用命令行开关

--project=my-firebase-project

要更改 firebase 应用程序目标项目,可以键入“ firebase use myProjectName”。我也使用以上的答案“ Firebase 列表”来检查我有什么项目 (为我工作在 Firebase cli 7.4与角7应用程序)

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

firebase use <project_id>

但是没有 < > 的例子

firebase use chat-app-2a150

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

firebase projects:list

2020年:

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

.firebaserc中,像下面这样设置不同的项目 ID:

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

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

注意: 切换项目不会产生任何 git 差异,它只是在您的本地机器中被记住。使用 firebase use查看当前正在使用的项目。

罕见个案:

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

附加@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}"
}
}

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

这个答案是关于更改项目中的应用程序和 site _ ID。

在我的例子中,我有一个项目(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 文档) :

  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