使用AOT构建项目时,来自自定义库的Angular 8延迟加载路由在运行时中断

问题描述 投票:1回答:1

我打算访问在自定义扩展库中定义的一些延迟加载的路由。一切正常,直到我想构建一个生产程序包(AOT处于活动状态)。构建已通过,但是当我尝试到达某个路线时,在浏览器的控制台中收到此错误:

Uncaught Error: Uncaught (in promise): Error: Runtime compiler is not loaded
Error: Runtime compiler is not loaded
at e.Jr (main.41ff3398f5c3f189c836.js:1)
at t.project (main.41ff3398f5c3f189c836.js:1)
at t._tryNext (main.41ff3398f5c3f189c836.js:1)
... 

[我假设它与loadChildren属性有关,当我构建库时,ng-packgr因新的Angular 8延迟加载合成器,箭头功能而失败(这是一个已知问题https://github.com/ng-packagr/ng-packagr/issues/1285。]]

惰性路由在自定义库中定义如下:

export function getRouteModule() {
  return RouteModule;
}
export const MAIN_APP_ROUTES: Routes = [
{
  path: 'route',
  loadChildren: getRouteModule
},
...
];

然后在我的消费者项目中:

@NgModule({
 imports: [
     BrowserModule,
     LibraryModule,
     RouterModule.forRoot(MAIN_APP_ROUTES, {useHash: true})
 ],
 declarations: [
     AppComponent
 ],
 bootstrap: [AppComponent]
 })
 export class AppModule {
 }

所以我尝试了多个合成器,较旧的结合了Angular库的合成器应该很棒:

{
  path: 'route',
  loadChildren: '@MyLib/route/route.module#RouteModule'
},
...

但是它不起作用。

任何想法?

我打算访问在自定义扩展库中定义的一些延迟加载的路由。一切正常,直到我想构建一个生产程序包(AOT处于活动状态)。构建通过了,但是当我...

angular lazy-loading angular-aot
1个回答
0
投票

推荐问答