angular-cli build prod“未加载运行时编译器”

我做了构建-prod并遇到了一个奇怪的错误
_zone_symbol__error
Error: Uncaught (in promise): Error: Runtime compiler is not loaded Error: Runtime compiler is not loaded at d (http://localhost:4200/polyfills.cd321326a3dfc08ceb46.bund

我没有在我的应用程序中手动使用编译器.最奇怪的是错误似乎来自polyfill.
我怎么解决这个问题?

在我的例子中,它可以为构建禁用Ahead-of-Time编译
ng build -prod --aot=false

这样,源仍然是打包和丑化的,并且包含了Just-in-Time编译器.

main.bundle js文件比使用aot编译时小,但vendor.bundle js增加约1.5 MB.

编辑2018-07-11

似乎有两种情况:

1)如果你的项目有意创建真正的动态组件,目前包含JIT编译器的唯一方法似乎是禁用生产构建的AOT.有关讨论,请参见https://github.com/angular/angular/issues/11780

2)如果您的项目不需要动态创建组件而您不知道错误发生的原因,则禁用AOT可能是一种解决方法,但要注意这些缺点.如果没有AOT,您的文件大小会更大,用户从应用程序开始需要更长的时间.在这种情况下,调查生成构建中引用JIT编译器的原因可能更为合适.

有一些SO讨论(AngularCli & AOT: ERROR Error: Runtime compiler is not loaded,Trouble shoot “Runtime compiler is not loaded”)围绕这些讨论建议延迟加载使用’COMPILER_PROVIDERS’的第三方模块可能是错误的原因.在撰写本文时,他们没有接受的答案.

有关使用延迟加载模块时的另一个陷阱的描述,请参阅此主题中的Alexei的答案

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...