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

Angular 8升级到9后报No provider for kf found in NodeInjector错误如何解决

错误解决步骤
  • 先定位实际缺失的依赖:kf是Angular9开启Ivy编译+代码混淆后生成的类缩写名,没有实际含义。你需要先修改angular.json配置,关闭构建优化和开启sourcemap:找到对应构建配置下的optimization字段设为false,sourceMap字段设为true,重新运行项目,此时控制台会输出真实的缺失类名,方便定位问题。
  • 检查依赖注入配置:拿到真实类名后,确认该类是否添加了@Injectable({ providedIn: 'root' })注解,或者是否被手动加入到对应NgModule的providers数组中。Angular9的Ivy编译对DI校验更严格,Angular8中可以隐式生效的部分注入规则在9版本会直接抛出错误。
  • 验证第三方依赖兼容性:如果缺失的类来自第三方依赖库,确认该依赖是否发布了兼容Angular9的版本,大部分未适配Ivy的低版本第三方库都会出现类似注入错误。如果暂时无法升级依赖,可以在tsconfig.json的angularCompilerOptions中加入"enableIvy": false,关闭Ivy编译验证。
  • 清理旧缓存重新安装依赖:删除项目根目录下的.angular缓存文件夹、node_modules文件夹、以及package-lock.json或yarn.lock文件,重新执行npm install安装依赖后启动项目,排除旧版本编译缓存引发的异常。
  • 排查废弃API使用:检查项目中是否使用了Angular9已移除的DI相关废弃API,比如旧版ReflectiveInjector相关调用,替换为Angular9支持的Injector.create写法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:45:03