Dart / Angular 2:Pub在页面重新加载时发送404

时间:2017-01-31 18:37:29

标签: angular dart angular2-routing dart-pub angular2-dart

有一些类似的问题,但我还没有找到解决这个问题的方法。

让我们假设我使用

  

pub serve --port 13371

以便在本地启动我的Angular 2 / Dart应用程序。在基本文件中,我有一个像这样配置的路由器:

@RouteConfig(const [
  const Route(
      path: '/home',
      name: 'Home',
      component: HomeComponent,
      useAsDefault: true
  ),
  const Route(
      path: '/about',
      name: 'About',
      component: AboutComponent
  )
])
class AppComponent {}

和这样的模板:

    <nav>
      <ul>
        <li>
          <a [routerLink]="['Home']">Home</a>
        </li>
        <li>
          <a [routerLink]="['About']">About</a>
        </li>
      </ul>
    </nav>

在Dartium或其他浏览器中,我转到http://localhost:13371/,我将其重定向到http://localhost:13371/home。每当我按重新加载时,我都会收到 404错误

原因是服务器配置。当angular更改URL时,它知道要去哪里以及如何重写URL。但是,对于服务器/home/about不存在。

但是我的问题是如何配置pub以便始终重定向到index.html,以便我可以刷新并转发到子网站呢?是否有一些配置要添加到pubspec.yaml?

2 个答案:

答案 0 :(得分:4)

添加

bootstrap(AppComponent, [
  /* other providers */, 
  provide(LocationStrategy, useClass: HashLocationStrategy),
])

或使用支持重写的Nginx等代理。 pub本身并不以任何方式支持它。

另见https://pub.dartlang.org/packages/pub_serve_rewrites

答案 1 :(得分:0)

不要在路径“/”上使用斜杠。试试这个:

const userRoutes: Routes = [
    { path: 'home', component: HomeComponent, pathMatch: 'full' },
];