【发布时间】:2016-07-02 08:54:13
【问题描述】:
nginx 似乎不适用于 Angular 2 RC3 路由器的 prod 版本。我收到以下错误:
Error: Uncaught (in promise): Error: Cannot match any routes: ''
at s (zone.js:538)
at zone.js:515
at t.invoke (zone.js:323)
at Object.onInvoke (ng_zone_impl.js:46)
at t.invoke (zone.js:322)
at t.run (zone.js:216)
at zone.js:571
at t.invokeTask (zone.js:356)
at Object.onInvokeTask (ng_zone_impl.js:37)
at t.invokeTask (zone.js:355)
我的nginx配置很简单:
listen 8080;
server_name localhost;
charset utf-8;
location / {
root /Users/JARVIS/src/web/ui/dist;
index index.html index.htm;
}
我不知道这是它的配置问题,还是新路由器的问题,还是它的编译方式问题。我正在使用 angular2-webpack-starter。此问题仅发生在 nginx 中托管的 prod 构建中。在开发服务器中一切正常。
我的路线非常简单:
export const ChromeRoutes: RouterConfig = [
{
path: '',
component: Chrome,
canActivate: [AuthGuard], // this protects all child routes
children: [
{ path: 'dashboards', component: Dashboards },
{ path: 'inventory', component: Inventory },
{ path: 'content', component: Content },
{ path: 'settings', component: Settings },
{ path: '', redirectTo: '[/dashboards]' }
]
}
我尝试将 '' 更改为 'chrome' 而没有任何变化。有无 redirectTo 条目也无所谓。
编辑:
我通过 JSON.stringify() 定义的完整路线...
javascript
[{
"path": "login",
"terminal": true
}, {
"path": "",
"canActivate": [null],
"children": [{
"path": "dashboards"
}, {
"path": "inventory"
}, {
"path": "content"
}, {
"path": "settings"
}]
}, {
"path": "inventory",
"canActivate": [null],
"children": [{
"path": "",
"terminal": true
}, {
"path": ":id"
}]
}]
【问题讨论】: