为什么 Google Lighthouse 会为 Angular redirectTo 路由返回 404?

Tyl*_*ian 3 lighthouse angular-routing ionic-framework angular

我正在开发一个 Ionic Aungular PWA 项目,并且在 Chrome 中始终遇到失败的 Lighthouse 审核,并显示 404 错误,指出无法找到我重定向到的默认路径(本例中为 /home)的 localhost 页面。我在下面包含了自动生成的 src/app/app-routing.module.ts 文件。如果我替换重定向路径来加载 \xe2\x80\x9chome\xe2\x80\x9d 模块而不是重定向到主路径,则审核成功。任何人都可以帮助解释为什么redirectTo 不起作用吗?

\n
import { NgModule } from '@angular/core';\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n  {\n    path: 'home',\n    loadChildren: () => import('./pages/home/home.module').then( m => m.HomePageModule)\n  },\n  {\n    path: '',\n    redirectTo: 'home',\n    pathMatch: 'full'\n  },\n  {\n    path: 'create-restaurant-menu',\n    loadChildren: () => import('./pages/page2/page2.module').then( m => m.Page2Model)\n  }\n];\n\n@NgModule({\n  imports: [\n    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })\n  ],\n  exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

您是否按照Angular 文档的http-server建议用于测试?如果是这样:您应该知道不会将 404 转发到. 在审核期间,Lighthouse 将刷新多次。如果您的 SPA 同时更改路径,将找不到该路径的匹配文件并简单地返回 404。http-serverindex.htmlhttp-server

这当然相当讽刺,因为 Lighthouse 和 Angular 都是由 Google 开发的,但他们没有意识到他们的指令可能会破坏他们自己的工具。更讽刺的是,Angular 文档一http-server开始就建议使用,而它的维护者(早在 2017 年)就明确表示它不会支持 SPA。

我建议http-server使用serve. 如果添加该选项--single,它将“将所有未找到的请求重写为index.html”。如果这可以解决您的审核问题,请告诉我。