angular2 with webpack,模块路由得到系统未找到错误

时间:2016-11-20 00:04:53

标签: angular webpack angular2-routing

我现在正在关注Angualr Modules指南,但与教程不同,我使用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而不是System来打包angular2项目时,是否有人遇到错误?

由于

1 个答案:

答案 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