首页 > 解决方案 > 错误:未加载运行时编译器:在 Angular 7 的生产构建中

问题描述

我一直在研究 Angular 7 项目并实现了模块的延迟加载,如下所示:

  { path: 'privacy-statement',  loadChildren: () => import('./privacy-statement/privacy-statement.module').then(m => m.PrivacyStatementModule) }

它在正常服务上工作正常,但是当我使用 --prod 服务应用程序并尝试访问“隐私声明”时,它会引发以下错误

错误:运行时编译器未在 t._tryNext (main.fd01867a26977f516ab1.js:1) 在 t._next 的 t.project (main.fd01867a26977f516ab1.js:1) 的 n.Ht (main.fd01867a26977f516ab1.js:1) 加载(main.fd01867a26977f516ab1.js:1) 在 t.next (main.fd01867a26977f516ab1.js:1) 在 main.fd01867a26977f516ab1.js:1 在 e.invoke (polyfills.a7106ca102d40b2f087a.main.js:1) 在 Object.onInvoke FD01867A26977F516AB1.JS:1)在E.Invoke(Polyfills.A7106CA102D40B2F087A.JS:1)at t.run(Polyfills.a7106ca102d40b2d40b2f087a.js:1)at P(Poly Fillss:polyfills.a77101106.a77106.a7106cA.a7106cA) js:1) 在 polyfills.a7106ca102d40b2f087a.js:1 在 e.invokeTask (polyfills.a7106ca102d40b2f087a.js:1) 在 Object.onInvokeTask (main.fd01867a26977f516ab1.js:1) 在 e.invokeTask (polyfills.a7106ca102d40b2f087a.js:1) 在 t.runTask (polyfills.a7106ca102d40b2f087a.js:1) 在 g (polyfills.a7106ca102d40b2f087a.js:1)

我已经搜索了一个解决方案,发现如果我禁用 AOT(将其设置为 false),它确实有效。但是它显着增加了服务时间,所以还有其他不影响加载时间的解决方案吗?

标签: angularangular7lazy-loadingangular-aot

解决方案


Angular 8 提供了带有语法的延迟加载import(),因此要么升级到 8,要么使用带有字符串的旧语法。

loadChildren: './path/privacy-statement.module#PrivacyStatementModule'

推荐阅读