Angular 6 的 Firebase 不会重定向到 index.html

Firebase with Angular 6 does not redirect to index.html

我有一个部署到 Firebase 的 Angular 6 应用程序,但是,当我转到已部署我的应用程序的 url 时,它不会重定向到 index.html。它只显示查看文档页面。

但是,如果我在最后键入带有 /index.html 的地址,它会完美运行。

这是我的 firebase json:

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

这是我的 angular 路由:

const appRoutes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: 'add-recipe', component: AddrecipeComponent },
  { path: 'edit-recipe/:id', component: EditrecipeComponent },
  { path: 'recipe-detail/:id',      component: RecipedetailComponent },
  { path: 'shopping-list',      component: ShoppinglistComponent },
  { path: '',
    redirectTo: '/home',
    pathMatch: 'full'
  },
  { path: '**', component: HomeComponent }
];

在我的 index.html 文件中,这是我的基本 href:

<base href="/">

在配置过程中,我勾选了这是单页应用程序选项。

感谢您的帮助。

编辑:当我用 localhost 测试它时,它完美地重定向。

redirectTo 应该具有 route 的值,即带有 '/' 的 path

redirectTo: 'home',更改为redirectTo: '/home',

此外,我猜路由配置中的最后两段是多余的。请将其更改为以下内容:

const appRoutes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: 'add-recipe', component: AddrecipeComponent },
  { path: 'edit-recipe/:id', component: EditrecipeComponent },
  { path: 'recipe-detail/:id',      component: RecipedetailComponent },
  { path: 'shopping-list',      component: ShoppinglistComponent },
  { path: '**', redirectTo: '/home' }
];

遇到此问题的任何人的问题解决方案:HomeComponentappRoutes 中定义了两次,尽管 localhost 没有问题,但 Firebase 有。

根据Angular documentation,您不应定义重复的路由。

为了简单地解决问题,我删除了行

{ path: 'home', component: HomeComponent },

这让问题消失了。

解决这个问题的另一种方法是公认的答案,这实际上是一个更好的解决方案。