Angular10升级到12后运行报错:ɵɵFactoryTarget未定义如何解决
问题解决步骤
该报错核心原因为Angular核心依赖版本不匹配、公共库编译产物未适配Angular 12的Ivy编译规则,可按以下步骤逐一排查修复:
- 统一所有Angular相关依赖版本
确保package.json中所有@angular/开头的依赖包(包括@angular/core、@angular/common、@angular/compiler、@angular/cli等)版本均为12.x,同时配套的ng-packagr、@angular-devkit/build-angular版本也必须为12.x。删除本地node_modules目录、yarn.lock锁文件后重新执行yarn install安装依赖。 - 重新编译所有Angular公共库
你当前项目为library类型,Angular 10环境下编译的库产物仅适配旧版View Engine,不包含Angular 12新增的ɵɵFactoryTarget相关定义。需先清空历史dist输出目录,使用升级后的Angular 12配套工具重新执行ng build编译整个库。如果你的上层业务项目还依赖了其他自定义Angular库,所有依赖库都需要升级到Angular 12后重新编译。 - 修正tsconfig编译配置
打开项目下的tsconfig.lib.json和tsconfig.lib.prod.json,确认两项配置:compilerOptions.target不低于es2017,Angular 12起已停止对ES5输出的默认支持angularCompilerOptions.enableIvy设置为true,Angular 12默认使用Ivy引擎,关闭Ivy的View Engine编译产物会出现属性不存在的报错
- 清理全局缓存
执行yarn cache clean清理yarn全局缓存,同时删除项目根目录下的.angular缓存文件夹,避免旧编译缓存干扰。
内容的提问来源于stack exchange,提问作者raphisama
相关产品推荐
相关产品推荐

