You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Angular 8至9后出现CompilerFactory无提供者错误求助

解决Angular 8升级到9后出现的NullInjectorError: No provider for CompilerFactory!

我之前从Angular 8升级到9的时候,完完全全碰到过这个一模一样的错误!当时折腾了好一会儿才搞定,给你分享几个亲测有效的解决步骤:

1. 先统一Angular核心依赖的版本

这个错误最常见的原因就是升级后部分Angular包版本不一致(比如@angular/core还是8.x,但@angular/compiler已经是9.x)。你可以先检查一下当前依赖版本:

npm list @angular/core

如果输出里有不同版本的Angular包,赶紧把核心依赖统一升级到9.x:

npm install @angular/core@9 @angular/compiler@9 @angular/platform-browser-dynamic@9 --save

2. 检查Angular的编译配置(Ivy相关)

Angular 9默认启用了Ivy编译器,要是你的配置里不小心禁用了或者配置错了,也会触发这个错误:

  • 打开angular.json,找到projects -> [你的项目名] -> architect -> build -> options
  • 确保enableIvy设置为true,或者直接删掉这个配置(因为Angular 9默认启用Ivy)
  • 同时检查aot配置,设置为true试试

3. 彻底清理缓存和依赖

升级后残留的缓存和旧依赖文件很容易搞出问题,按这个顺序操作:

# 删除node_modules和锁文件
rm -rf node_modules
rm package-lock.json
# 重新安装依赖
npm install
# 清理Angular CLI缓存
ng cache clean
# 或者旧版本CLI用这个:ng clean
# 重新构建项目
ng build

4. 排查第三方库兼容性问题

如果上面的步骤都没用,大概率是某个第三方库还没兼容Angular 9的Ivy编译器。你可以先临时禁用Ivy试试:

  • 打开tsconfig.json,在angularCompilerOptions里添加:
    "enableIvy": false
    
  • 然后重新启动项目,如果能正常运行,就去排查你用的第三方库,把它们更新到支持Angular 9的版本,之后再重新启用Ivy。

你的main.ts代码看起来是完全正常的,不用改它,问题基本都出在依赖或配置上,按上面的步骤一步步来应该就能解决!

内容的提问来源于stack exchange,提问作者Hwang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:08:12