2016-11-20 60 views
0

我现在正在关注Angualr模块指南,但与本教程不同,我使用webpack作为打包解决方案。一切都很好,直到我添加英雄模块。对于默认的接触模块,它工作没有问题,但是当我添加英雄模块,我得到这个错误:angular2 with webpack,模块路由获取系统未找到错误

EXCEPTION: Uncaught (in promise): ReferenceError: System is not defined 

我查了很多,如修改tscofig并设置模块CommonJS的,它是无用

我想接触模块和英雄之间的模块不同的是:

export const routes: Routes = [ 
    { path: '', redirectTo: 'contact', pathMatch: 'full'}, 
    { path: 'crisis', loadChildren: 'app/crisis/crisis.module#CrisisModule' }, 
    { path: 'heroes', loadChildren: 'app/hero/hero.module#HeroModule' } 
]; 

所以英雄模块延迟加载,接触模块不同。

有没有人遇到错误,当你使用webpack而不是系统来打包你的angular2项目?

感谢

弗兰克

+0

见你的英雄模块是如何构建。看起来你的heros模块是使用systemjs构建的,这就是为什么它搜索Systemjs的原因。 –

+0

这怎么可能?整个项目是用webpack构建的,英雄只是同一个项目里面的一个功能模块,我完全按照ng2 – user3006967

+0

的指导,你能给一个笨蛋吗? –

回答

1

如果您已按照angular2 webpackngmodule指南,你需要做的是:

npm install --save-dev angular2-router-loader

和它的WebPack配置添加到您的打字稿装载机(在webpack指南中是config/webpack.common.js):

module: { 
    loaders: [ 
    { 
     test: /\.ts$/, 
     loaders: [ 
     'awesome-typescript-loader', 
     'angular2-template-loader', 
     'angular2-router-loader' 
     ] 
    }, 
    ... 

和你的路由模块在制造相对于加载它们的模块的路径:

export const routes: Routes = [ 
    { path: '', redirectTo: 'contact', pathMatch: 'full'}, 
    { path: 'crisis', loadChildren: './crisis/crisis.module#CrisisModule' }, 
    { path: 'heroes', loadChildren: './hero/hero.module#HeroModule' } 
]; 

阅读更多:
https://github.com/brandonroberts/angular2-router-loader
https://medium.com/@daviddentoom/angular-2-lazy-loading-with-webpack-d25fe71c29c1#.qnct3euh2

相关问题