如何在第二个 Firebase 主机中部署 Flutter Web App?

Posted

技术标签:

【中文标题】如何在第二个 Firebase 主机中部署 Flutter Web App?【英文标题】:How to deploy a Flutter Web App in a Second Firebase Hosting? 【发布时间】:2022-01-09 05:29:40 【问题描述】:

在名为 originalawesome 的 Firebase 项目中,我在 Firebase Hosting 上设置了第二个站点,然后:

originalawesome.web.app
secondawesome.web.app

第一个 (originalawesome) 有一个 JS 应用程序正在生产中。

在第二个 (secondawesome) 中,我想安装一个 Flutter Web 应用程序,为此我遵循以下步骤:

firebase init
(I select Hosting)
(I select to use an existing project)
(I select the project - originalawesome) //secondawesome is not an option

它要求我选择要发布的目录,所以我认为 Flutter Web 应用程序将在我的生产站点上发布,这是错误的。

阅读Share project resources across multiple sites 中的文档,当要在不同站点进行部署时,请使用以下命令区分Deploy Targets

firebase target: apply hosting secondawesome secondawesome

但是,当我运行它时,我收到一个错误,因为我还没有 firebase json 文件。

错误:不在 Firebase 应用目录中(找不到 firebase.json)

问题是,如何在不删除前一个的情况下在第二个 Firebase 主机上部署 Flutter Web App?

【问题讨论】:

【参考方案1】:

经过大量的反复试验,解决方案如下:

在应用根目录中(很重要):

    flutter build web --web-renderer html //In my case, I will 
//generate html web rendered. It will create a firebase.json 
//file and others

    firebase target:apply hosting originalawesome originalawesome
    firebase target: apply hosting secondawesome secondawesome
    //It will create records in .firebaserc file

在firebase.json文件中,需要包含:


  "hosting": 

    "target": "secondawesome", //deploy target 
//(previously created on Firebase Hosting Console)

    "public": "build/web", //build/web is the directory of the Flutter Web App build
///rest of file

现在是的,运行...

firebase init

?你想用什么作为你的公共目录? 构建/网络

?配置为单页应用(将所有 url 重写为 /index.html)? 是的

?使用 GitHub 设置自动构建和部署? 没有

?文件 build/web/index.html 已经存在。覆盖? 没有

完成并将文件上传到 Firebase 托管 ...

firebase deploy --only hosting:secondawesome

我希望它服务于其他人!

【讨论】:

以上是关于如何在第二个 Firebase 主机中部署 Flutter Web App?的主要内容,如果未能解决你的问题,请参考以下文章

ansible运维工具

为啥在第一个连接结束后创建第二个连接会导致管道异常?

如何知道自定义 Java 节点是不是包含在第二个节点中?

如何在第二个 ViewController 表格视图中使用模型快速显示第一个 ViewController 值

左外连接 - 如何在第二个表中返回一个布尔值?

我如何在 android 中显示从 listView 到第二个活动的相同数据,如果我点击 google,它会在第二个活动中显示 google