Angular9修改模板报错ERROR in Illegal State: external references changed怎么办
解决方案:Angular 9修改模板触发
ERROR in Illegal State: external references changed报错 该报错是Angular 9.x版本IVY编译器的增量编译功能已知缺陷,第二次修改模板时缓存的依赖引用和实际编译结果不一致,就会触发该异常,必须清空缓存重新构建才能恢复,可通过以下方法解决:
- 方案1:禁用IVY增量编译(最便捷的临时解决方案,无需升级依赖)
修改项目根目录的tsconfig.json文件,在angularCompilerOptions节点下新增配置:
调整后重启开发服务即可,该配置只会小幅降低热更新速度,不会影响生产构建性能,也不会再触发该报错。"angularCompilerOptions": { "enableIvy": true, "incremental": false, "allowEmptyCodegenFiles": true } - 方案2:校验第三方依赖的IVY兼容性
项目中使用的@progress/kendo-angular系列组件、@q9elements系列自定义组件如果是未做IVY兼容的旧版本,也会触发增量编译的引用校验异常。可以先排查自定义组件库的构建配置,要求其使用Angular 9兼容的配置打包,或者临时将不兼容的三方库加入tsconfig.json的skipLibCheck列表中。 - 方案3:调整开发环境构建配置
打开angular.json文件,找到对应项目的architect -> serve -> options配置节点,确认关闭开发环境的AOT编译:
开发环境使用JIT模式编译可以大幅降低该异常的触发概率。"options": { "aot": false, "buildOptimizer": false } - 临时快速恢复方案:如果不想修改配置,报错后无需全量构建,只需终止当前
ng serve进程,删除项目根目录下的.angular缓存文件夹,再重新启动开发服务即可,比全量重新构建节省一半以上的时间。
内容的提问来源于stack exchange,提问作者Nazar Vasylyshyn
相关产品推荐
相关产品推荐

