Firebase 托管在部署 angular 6 个应用程序后显示欢迎页面?

Firebase hosting showing welcome page after deploying angular 6 app?

我想开发 angular 6 个应用程序,但在部署 firebase 后只显示欢迎页面。

以下是我采取的部署步骤。

  1. 已安装 firebase-tools
  2. ng build --prod(在我的应用中)
  3. firebase 初始化
  4. 你准备好继续了吗? (Y/n) y
  5. (*) 托管:配置和部署 Firebase 托管站点
  6. 您想将什么用作 public 目录? (public) 距离
  7. 配置为单页应用程序(将所有 url 重写为 /index.html)? (y/N) y
  8. 文件 dist/index.html 已经存在。覆盖? (y/N) y
  9. Firebase 初始化完成!
  10. 在这一步中,我删除了 dist 文件夹并再次 运行 ng build --prod
  11. angular 在 dist 目录的子文件夹中构建应用程序因此我将包含 index.html 的子目录中的所有内容复制到 dist/.
  12. firebase 部署
  13. firebase 打开hosting:site

但在完成所有操作后,我仍然在 link 中看到欢迎页面。

我哪里做错了!?

尝试: 8. 文件 dist/index.html 已经存在。覆盖? (y/N) 否 并以隐身模式打开 link 到您的应用程序。说真的,我坚持了几个小时,因为这个 firebase 索引在我的案例中被缓存了,所以这就是为什么我在部署后看不到我的应用程序的原因。

浏览器缓存也是我的问题。如上所述,尝试隐身或使用proxysite.com(非常有用的网站)以避免浏览器缓存

这对我有用:

  • 删除 .firebase 文件夹
  • 删除.firebaserc
  • 删除firebase.json

现运行如下:

$ firebase init hosting
? File build/web/index.html already exists. Overwrite? No
$ firebase deploy --only hosting

检查终端上的路径。如果问题仍然存在,则删除 firebase 自动创建的文件夹并部署项目

就我而言,我在项目目录 (src) 中初始化 firebase。只需检查您所在的目录。它应该在顶层。

在您构建并尝试部署它之后,由于网页已被缓存,因此它将是相同的。所以要确保在 incognito.

中使用

配置为单页应用程序(将所有 url 重写为 /index.html)?不 ?使用 GitHub 设置自动构建和部署?否

  • 写了public/404。html ?文件 public/index.html 已经存在。覆盖?否

此错误是由您网站文件夹的 public 文件夹中的 index.html 生成的。

问题是: firebase 正在寻找 index.html 文件,有时它不直接存在于 dist 目录

解法:firebase.json 中的 public 路径更新为 "public":"dist/ProjectName"dist 文件夹中 index.html 文件的路径

例子

{
  "hosting": {
    "public": "dist/<YourProjectName>",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/dist/index.html"
      }
    ]
  }
}