如何在Angular 5中延迟加载外部模块?

时间:2018-09-11 13:55:41

标签: angular angular5 lazy-loading

我试图将一个外部模块(我写的)延迟加载到主应用程序中,但出现了一些错误,但首先我想问问我是否必须构建到 / dist中首先是外部模块,还是我必须使用源文件?

主要和外部应用程序/模块均使用Angular 5编写

错误:

ERROR in Error: No NgModule metadata found for 'AppModule'.
    at NgModuleResolver.resolve (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler/bundles/compiler.umd.js:20291:23)
    at CompileMetadataResolver.getNgModuleMetadata (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler/bundles/compiler.umd.js:15244:60)
    at visitLazyRoute (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler/bundles/compiler.umd.js:31182:104)
    at AotCompiler.listLazyRoutes (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler/bundles/compiler.umd.js:31150:20)
    at AngularCompilerProgram.listLazyRoutes (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler-cli/src/transformers/program.js:156:30)
    at Function.NgTools_InternalApi_NG_2.listLazyRoutes (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@angular/compiler-cli/src/ngtools_api.js:44:36)
    at AngularCompilerPlugin._getLazyRoutesFromNgtools (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:246:66)
    at Promise.resolve.then.then (/Users/me/Dev/Work/mobile-shop-frontend/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:537:50)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:160:7)

1 个答案:

答案 0 :(得分:1)

您必须为此外部模块编写包装器模块,然后延迟加载该包装器模块。 Angular不会将外部节点模块作为惰性模块加载,所以我采用了相同的方法