Javascript 在Angular 7中使用PathLocationStrategy后刷新页面时获得404

Javascript 在Angular 7中使用PathLocationStrategy后刷新页面时获得404,javascript,node.js,angular,typescript,ecmascript-6,Javascript,Node.js,Angular,Typescript,Ecmascript 6,我们使用angular 7+节点8.11.4,之前,我们使用HashLocationStrategy并且所有路由都工作,而正如您所知,“#”将自动添加到URL中作为散列标志,现在我们想要删除“#”,所以我使用PathLocationStrategy代替散列*。而在更改之后,当我刷新页面时,我会得到404页面,并且在访问重定向页面时也会出现这种情况,这是我的问题 我已经搜索并知道,在更改为PathLocationStrategy后,所有路由器都需要重定向到index.html(默认主页),但我不确

我们使用angular 7+节点8.11.4,之前,我们使用
HashLocationStrategy
并且所有路由都工作,而正如您所知,“#”将自动添加到URL中作为散列标志,现在我们想要删除“#”,所以我使用
PathLocationStrategy
代替散列*。而在更改之后,当我刷新页面时,我会得到404页面,并且在访问重定向页面时也会出现这种情况,这是我的问题

我已经搜索并知道,在更改为
PathLocationStrategy
后,所有路由器都需要重定向到index.html(默认主页),但我不确定如何在节点环境中实现它(大多数是apache、nginx、tomcat)

请参阅下面的代码:

应用程序模块.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

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

批准模块

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

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

尝试删除此项以查看是否有效

{ provide: LocationStrategy, useClass: PathLocationStrategy }
我想你不需要这个

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

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

您需要在服务器上实现URL重写。如果没有散列,服务器就不知道如何解析您的URL-因此404s@pixelbits问题是如何在节点中重写URL。。。这可能会有帮助:是的,如果没有
LocationStrategy
,它可以在404错误仍然像以前一样存在的情况下工作……嗯,不是,我想要的是修复404错误,你对node有什么想法吗?@KDFinal再次检查我的答案也许你需要使用express在这种情况下我在另一个问题中引用了答案,但它不起作用。参见下面的代码:
ts app.get('/*',(req,res)=>{res.render('index',{req,res});})