直接在Angular 6中加载页面

时间:2018-09-28 12:41:45

标签: angular

我有一个Angular 6应用程序,其组件名为Assets。当我通过routerLinks导航到组件时,页面加载并按预期显示数据:

http://localhost:4200/assets/2

但是,如果我刷新页面,或者只是直接在浏览器中加载链接,那么很多脚本将无法加载:

GET http://localhost:4200/assets/runtime.js net::ERR_ABORTED 404 (Not Found)

Refused to execute script from '<URL>' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

GET http://localhost:4200/assets/polyfills.js net::ERR_ABORTED 404 (Not Found)

我需要在路由器上做些什么还是什么原因?

4 个答案:

答案 0 :(得分:2)

这是因为,默认情况下,Angular路由器使用PathLocationStrategy。

http://localhost:4200/assets/2。刷新浏览器时,需要重定向到主页(index.html),这应该在服务器端路由器重定向设置中进行处理。

您也可以尝试使用HashLocationStrategy,即它将添加带有“#”的路由器路径。 http://localhost:4200/#assets/2。如果您遵循此操作,则可以处理页面刷新。但是我们需要确保页面状态在所有模块(包括延迟加载的模块)中都可用。

答案 1 :(得分:2)

在路由模块中启用哈希位置。它应该看起来像以下内容。

const routes: Routes = [
  { path: '', component: MyComponent },
  { path: 'my-other', component: MyOtherComponent }
];

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

之后,Angular将能够进行刷新。

答案 2 :(得分:0)

似乎是URL重写问题。如果您有iis服务器,则需要将web.config文件放入服务器中并添加用于URL重写的逻辑。您可以在angular.io

中找到它

如果您使用的是Apache,则需要编写代码,然后添加[.htaccess] [2]

[2]:Deploy Angular 2 to Apache Server个文件。

答案 3 :(得分:0)

当您更改了基本href值时,也会发生此问题

<base href="/"> to Something else

在index.html