【发布时间】:2017-03-16 18:38:26
【问题描述】:
我正在尝试将已经使用延迟加载模块的应用程序转换为 AOT。我正在使用 @ngtools/webpack 工具包编译 AOT 代码,但是我遇到了一个错误,即 Angular 无法找到看起来延迟加载的模块的代码。
ERROR in ./src/ngfactory async
Module not found: Error: Can't resolve '/Library/WebServer/Documents/envato-teams/src/ngfactory/src/app/components/container/projects.ngfactory.ts' in '/Library/WebServer/Documents/envato-teams/src/ngfactory'
@ ./src/ngfactory async
@ ./~/@angular/core/src/linker/system_js_ng_module_factory_loader.js
@ ./src/ngfactory/src/app/app.module.ngfactory.ts
@ ./src/main.aot.ts
@ multi main
在我的应用程序路由定义中值得一提的是,这个项目的模块是延迟加载的:
{
path: 'projects', loadChildren: './components/container/projects#ProjectModule'
},
这是我的设置的样子:
tsconfig:
...
"angularCompilerOptions": {
"genDir": "./src/ngfactory",
"entryModule": "src/app/app.module#AppModule"
}
...
网页包:
new ngtools.AotPlugin({
tsConfigPath: './tsconfig.aot.json',
}),
Main.aot.ts
/*
* Providers provided by Angular
*/
import { platformBrowser } from '@angular/platform-browser';
import { AppModuleNgFactory } from './ngfactory/src/app/app.module.ngfactory';
import { Servicesconfig } from './app/services/index';
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
在 webpack 中,我正在使用 @ngtools/Webpack 编译 ts 文件:
// Support for .ts files.
{
test: /\.ts$/,
loaders: ['@ngtools/webpack'],
exclude: [/\.(spec|e2e)\.ts$/]
},
感谢您的帮助!
【问题讨论】:
-
遇到同样的问题...到目前为止,没有找到修复...
-
我目前在 Angular gitter chanel 中得到的答案是 AOT 和延迟加载不能很好地配合使用。尽管github.com/angular/angular-cli/commit/… 尚未合并,但很快就会修复它,但很快它应该会被发布并在@ngtools/webpack 中工作
标签: angular angular2-routing angular2-aot