构建项目时出现错误。
ng build --prod
以下是控制台上显示的错误。
Date: 2019-05-06T07:11:31.860Z
Hash: 86bc6833bfe9e981c890
Time: 12080ms
chunk {0} runtime.26209474bfa8dc87a77c.js (runtime) 1.41 kB [entry] [rendered]
chunk {1} es2015-polyfills.c5dd28b362270c767b34.js (es2015-polyfills) 56.4 kB [initial] [rendered] chunk {2} main.fa4681da67b0e16d34dc.js (main) 128 bytes [initial] [rendered]
chunk {3} polyfills.41559ea504b9f00b6dea.js (polyfills) 130 bytes [initial] [rendered]
chunk {4} styles.3ff695c00d717f2d2a11.css (styles) 0 bytes [initial] [rendered]
**ERROR in Cannot read property 'loadChildren' of undefined**
设置
- 视窗 10
- 节点 v10.15.3
- npm 6.4.1
- @角/cli 7.3.8
重现步骤
1)使用路由创建新的角度应用程序
1.1) 新的 MyApp
1.2.) 当提示使用路由时,说是并接受其他默认值
2) ng g 组件首页
3) ng g 组件设置
4) 并修改 app-routing.module.ts 如下。
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { SettingsComponent } from './settings/settings.component';
const routes: Routes = [
{
path: "home",
component: HomeComponent
},
{
path: "settings",
component: SettingsComponent
}
];
const routes2 = routes.map( e => ({ path: e.path, component: e.component}) );
const routes3 = [];
routes.forEach( e => ( routes3.push({ path: e.path, component: e.component})) );
@NgModule({
imports: [
// RouterModule.forRoot(routes2), // **this doesn't work**
RouterModule.forRoot(routes3) // but this one works just fine
],
exports: [RouterModule]
})
export class AppRoutingModule { }
5) ng build --prod
错误应该出现在控制台中
问题
看看第 4 步,我的问题真的是为什么以下工作有效?
RouterModule.forRoot(routes3)
而以下不起作用?
RouterModule.forRoot(routes2)
请注意,从结构来看routes
,routes2
、 和routes3
都是相同的,至少是等价的。它们都是具有相同属性的对象数组。不知道我在这里缺少什么。
更新:
以下令人惊讶的是也不起作用。
RouterModule.forRoot( routes3.concat([]) );
但以下工作。
RouterModule.forRoot( routes3 );
这真的很奇怪。它一定是编译器中的一个错误。