微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的答案

原文地址:https://www.jb51.cc/angularjs/142306.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐