【问题标题】:Get 404 when refresh page after using PathLocationStrategy in Angular 7在 Angular 7 中使用 PathLocationStrategy 后刷新页面时获取 404
【发布时间】:2020-03-06 22:14:37
【问题描述】:

我们使用 Angular 7 + 节点 8.11.4,以前,我们使用 HashLocationStrategy 并且所有路由都有效,而如您所知,'#' 将作为哈希标志自动添加到 URL,现在我们要删除 '# ',所以我使用 PathLocationStrategy 代替 Hash*。更改后,刷新页面时会出现404页面,访问重定向页面时也会出现,这是我的问题。

我查了知道,改成PathLocationStrategy后,所有路由器都需要重定向到index.html(默认主页),而我不知道如何在node环境中实现(大多数是apache,nginx ,tomcat)

请看我下面的代码:

app.module.ts

providers: [{ provide: LocationStrategy, useClass: PathLocationStrategy }, LookupPsmService, ComponentMapping,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: PsmHttpInterceptor,
      multi: true
    }, CookieService, AuthGuard],
  bootstrap: [AppComponent]
})
export class AppModule {CKEditorModule}

index.html

<base href="/">

AppRoutingModule

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule {
}

我的预期结果是删除 URL 中的“#”,并且可以在浏览器中刷新。

【问题讨论】:

  • 您需要在服务器上实现 URL 重写。没有哈希,服务器不知道如何解析你的 URL - 因此 404s
  • @pixelbits 问题是如何在节点中重写 URL ......这让我很困惑
  • 这可能会有所帮助:npmjs.com/package/express-urlrewrite

标签: javascript node.js angular typescript ecmascript-6


【解决方案1】:

尝试删除它以查看它是否有效

{ provide: LocationStrategy, useClass: PathLocationStrategy }

我认为你不需要那个

使用express更新以处理nodejs中的404,您可以这样做

app.get('*', function(req, res) ...

【讨论】:

  • 是的,没有LocationStrategy,它可以在404错误仍然存​​在的情况下像以前一样工作。
  • ...emmm 不是,我想要修复 404 错误,你对 node 有什么想法吗?
  • @KDFinal 再次检查我的答案也许你需要在这种情况下使用 express
  • 我参考了另一个问题的答案,但它不起作用。请参阅下面的代码:ts app.get('/*', (req, res) =&gt; { res.render('index', {req, res}); });
猜你喜欢
  • 1970-01-01
  • 2019-10-06
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2019-07-09
  • 2023-03-24
相关资源
最近更新 更多