Chrome/Internet 资源管理器浏览器刷新(F5、ctrl+R、刷新箭头等)无法使用远程服务器上的 Angular (2+) 项目

Chrome/Internet explorer browser refresh (F5, ctrl+R, refresh arrow etc.) not working using Angular (2+) project on remote server

我对远程服务器上部署的 Angular (2+) 项目的简单手动刷新(F5、ctrl+R、刷新箭头等)操作有问题。

在本地测试项目(开发和构建产品测试)工作完美,即使部署到我们的实习服务器,刷新工作正常。

在远程服务器上,任何刷新(F5、ctrl+R 等)都将被忽略。我没有收到任何错误,没有找到任何页面,什么都没有 - 浏览器只是停留在当前页面上,没有任何更改或刷新。

在网络选项卡中,它甚至不向服务器发送请求。

我可以看到 favicon 闪烁了一毫秒(所以前端注册了一些东西)。

我可以强制刷新的唯一方法是手动更改 URL。

PS。唯一可见的区别是远程服务器运行在 https:// 协议上。

我在 google 上搜索了几个小时,但没有任何帮助。

听起来 angular 端的错误路由器配置导致了路由循环。我会仔细检查您的 app.module.ts 路线。您还可以添加 enableTracing 来诊断路由:

{ enableTracing: true }

app.module.ts

const appRoutes: Routes = [
  { path: 'crisis-center', component: CrisisListComponent },
  { path: 'hero/:id',      component: HeroDetailComponent },
  {
    path: 'heroes',
    component: HeroListComponent,
    data: { title: 'Heroes List' }
  },
  { path: '',
    redirectTo: '/heroes',
    pathMatch: 'full'
  },
  { path: '**', component: PageNotFoundComponent }
];

@NgModule({
  imports: [
    RouterModule.forRoot(
      appRoutes,
      { enableTracing: true } // <-- Add this to debug routes
    )
  ]
})
export class AppModule { }

好的,找到问题了:

路由请求未由服务器 NginX 配置处理,该配置在无主体 204 中解析,Chrome 开发人员工具将其丢弃为无效,使其看起来像没有发出请求。

删除 204 错误处理后,错误在 Chrome 中显示为 404,因此不是 Angular 问题 :)