Я пытаюсь включить внешний модуль (размещенный в репозитории git / npm) как модуль с отложенной загрузкой в мое приложение Angular.
Я компилирую свой внешний модуль с помощью компилятора ngc:
node_modules/.bin/ngc -p tsconfig-aot.json
Вот так выглядит моя конфигурация компилятора:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"baseUrl": "src",
"declaration": true,
"outDir": "./release/src"
},
"files": [
"./src/index.ts"
],
"angularCompilerOptions": {
"genDir": "release",
"skipTemplateCodegen": true,
"entryModule": "index#ExternalModule",
"skipMetadataEmit": false,
"strictMetadataEmit": true
}
}
И в моем основном приложении я лениво загружаю данный модуль:
RouterModule.forRoot([
{ path: '', component: HomeComponent, pathMatch: 'full'},
{ path: 'lazy', loadChildren: './lazy/lazy.module#LazyModule'},
{ path: 'external', loadChildren: '@angular-universal-serverless/external-module/release#ExternalModule'}
])
Для компиляции я использую плагин @ ngtools / webpack.
Компиляция JIT работает без проблем, но компиляция AOT выдает ошибку:
ERROR in ./src/ngfactory lazy
Module not found: Error: Can't resolve '/path/to/my/project/angular-universal-serverless/src/ngfactory/node_modules/@angular-universal-serverless/external-module/release/src/index.js' in '/Users/mtreder/Documents/private/work/angular-universal-serverless/src/ngfactory'
@ ./src/ngfactory lazy
@ ./~/@angular/core/@angular/core.es5.js
@ ./src/main.server.aot.ts
Поэтому я решил проверить, что выводит компилятор ngc
(который вызывается изнутри плагином webpack):
node_modules/.bin/ngc -p tsconfig.server.aot.json
И вообще мой модуль отсутствует в каталоге /path/to/my/project/angular-universal-serverless/src/ngfactory/node_modules
.
ls src/ngfactory/node_modules/
@angular @nguniversal @types idb ng-http-sw-proxy rxjs typescript-collections
Как заставить ngc поместить указанные модули в выходной каталог ngfactory
?
Мое основное приложение можно найти здесь: https://github.com/maciejtreder/angular-universal-serverless/tree/externalModule
И внешний модуль здесь: https://github.com/maciejtreder/angular-external-module