Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从firebase cli切换应用程序?_Firebase_Firebase Tools - Fatal编程技术网

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

如何从firebase cli切换应用程序?,firebase,firebase-tools,Firebase,Firebase Tools,这似乎是一件很容易做到的事情,但无论出于什么原因,我都被打败了 我正在尝试使用firebase tools CLI与数据库交互。我可以毫无困难地登录,当我键入firebase list时,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序 我的问题是,我想连接到其他应用之一。我正在我的登台应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我找不到任何方法切换到该应用程序 想法?在运行firebase列表的目录中,将有一个名为firebase

这似乎是一件很容易做到的事情,但无论出于什么原因,我都被打败了

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

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


想法?

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


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

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

下面的代码适合我

firebase use <project_id>
firebase使用

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

your-project
├── .firebaserc
└── functions
   ├── package.json
   └── index.js
转到
.firebaserc
,然后执行下一个示例

{
  "projects": {
    "default": "project-name",
    "prod": "other-name"
  }
}
然后转到
package.json
并添加以下脚本(
changeToProd
,和
changeToDev

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

npm run-script changeToProd
您可以通过从终端运行以下命令或像我们刚才那样添加到脚本来验证当前项目

firebase use

您可以只使用命令行开关

--project=my-firebase-project

要更改firebase应用程序目标项目,可以键入“firebase使用myProjectName”。我还使用了上面的回答“firebase列表”来检查我有什么项目
(在firebase cli 7.4和angular 7应用程序中为我工作)

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

firebase use <project_id>
您可以使用以下代码查看所有项目,以便选择要使用的正确项目ID

firebase projects:list
2020年的答复:

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

.firebaserc
中,设置不同的项目ID:

{
“项目”:{
“生产”:“我的项目id”,
“测试”:“我的项目id--测试”
}
}
//您还可以使用“firebase使用--add”以交互方式添加它们`
然后您可以执行
firebase使用测试
firebase使用生产
在项目之间切换

请注意,切换项目不会创建任何git差异,它只会在本地机器中被记住。要查看当前正在使用的项目,请使用
firebase


如果要更改项目ID而不提交对项目所有者的
.firebaserc
的更改,请按照已接受的答案中所述,在本地
firebase使用我的项目ID
。另一方面,如果您是项目所有者,并且希望其他人使用自己的项目ID,则应将
.firebaserc
添加到
.gitignore

Addition@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运行runtimeconfig
获取自定义配置环境

.firebaserc

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

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

这个答案是关于在项目中更改应用程序和站点ID的

在我的例子中,我有一个项目(CoolProject),其中包含两个web应用程序:

  • 评估表:
  • 主网站:
    网站
这两个应用程序在本地和GitHub中都是单独的回购协议

每个应用程序都有自己的特定站点ID:

  • 表单:
    coolproject表单[.web.app]
  • 网站:
    coolproject网站[.web.app]
我首先设置了
表单
应用程序,并在没有任何问题的情况下部署到
coolproject表单
。但是,当我创建
web
应用程序(以及相关的
coolproject网站
site\u ID)并尝试使用
firebase deploy-仅托管
firebase deploy-仅托管:网站
部署它时,它错误地将其部署到
coolproject表单
覆盖
表单
应用程序

这就是我最终解决问题的方式(基于此):

  • 检查应用程序和相应的站点ID是否正确设置:
  • 设置
    网站
    部署托管目标(通过
    .firebaserc
  • 更新
    firebase.json
    (对于
    网站
    应用程序):
  • 部署

  • 通过此操作,
    网站
    应用程序现在已正确部署到
    coolproject网站.web.app

    是否有更改?因为我无法在firebase.json中找到应用程序名称,但可以在.firebaserc中找到它。。。。感谢您的澄清…项目名称现在确实在
    .firebaserc
    中。可能是错误的,但这似乎并没有切换数据库。部署将部署到“当前”项目,但它似乎仍然从原始数据库中提取数据。如果你要用它来分离生产环境和暂存环境,那就相当危险了。希望没有人丢失他们的产品数据:(我遇到了@Enric描述的关于在不同项目上访问默认数据库的相同问题。是否有某种方法可以检测客户端正在使用的项目,以便我可以更改配置以适当地初始化应用程序?请确保更改firebaseConfig`//web应用程序的Firebase配置变量firebaseConfig={apiKey:“api key”,authDomain:“new project.firebaseapp.com”,databaseURL:“https:/new project.firebaseio.com”,projectId:“new project id”,storageBucket:“xxxxxxxxxx.appspot.com”,messagingSenderI
    "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"
    ...
    
    {
      "projects": {
        "default":"{project-dev-id}",
        "prod": "{project-prod-id}"
      }
    }
    
    firebase apps:list
    
    firebase hosting:sites:list
    
    firebase target:apply hosting website coolproject-website
    
    ...
    "hosting": [{
        "target": "website",
        "public": "build",
        "ignore": [
          "firebase.json",
          "**/.*",
          "**/node_modules/**"
        ],
        "rewrites": [
          {
            "source": "**",
            "destination": "/index.html"
          }
        ]
      }],
    ...
    
    firebase deploy --only hosting