我想包括外部模块(混帐/ NPM库主办)在我的角度应用延迟加载模块。AOT编译器 - 包括延迟加载外部模块
我编译我的外部模块与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
编译器的输出(whic通过的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
如何包含外部模块? npm我还是npm链接? – yurzui
npm,作为依赖项:“@ angular-universal-serverless/external-module”:“git + https://github.com/maciejtreder/angular-external-module.git”, –
对不起,没有注意到它是externalModule分支 – yurzui