我想创建一个模块,以动态地加载模块(如路由器一样)。目前,我能够在开发环境这样做,但我不能建立我的生产项目。我缩小的问题,我发现这个问题是地方在那里我试图模仿路由器的provideRoutes功能与添加ANALYZE_FOR_ENTRY_COMPONENTS我模块的供应商是这样的: providers: [ { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: dynamicModules, multi: true }, { provide: DYNAMIC_MODULE_PATHS, useValue: dynamicModules }, { provide: NgModuleFactoryLoader, useClass: SystemJsNgModuleLoader }, ModuleLoaderService ]
ANALYZE_FOR_ENTRY_COMPONENTS在生产中不工作负载动态地模块
但我不断收到此错误: 错误:无法在'../dynamic/dynamic.module'中找到'DynamicModule'
而且使用绝对或相对路径并不重要。
奇怪的部分是,如果我重新保存我有提供程序的文件,然后它工作得很好,用ng服务。
我可以从路由器的源代码看到它应该像这样工作,但也许我错过了一些东西。
我忽略了很长一段时间,但现在它导致我的错误如果我尝试生产。
的样例项目可以在这里找到: Sample
它将日志消息到控制台。
TL; DR;
我试图动态地加载模块,而无需使用来自@angular/router
任何功能,所以我用ANALYZE_FOR_ENTRY_COMPONENTS
,但我不断收到此运行时错误:Cannot find module 'SomeModule' in 'path/to/some.module'
。该错误只当我第一次运行ng serve
,如果我重新保存装载机部分出现,然后消失,一切工作正常。