Angular v19.0.1 NG0203注入上下文错误排查求助
解决Angular v19.0.1中的NG0203: Inject()必须在注入上下文调用错误
问题核心原因
从你提供的npm ls @angular/core输出来看,@angular/material依赖的@angular/core版本和项目锁定的v19.0.1不一致——Angular对核心包版本要求严格统一,跨版本的依赖会导致注入上下文冲突,直接触发NG0203错误。
具体解决步骤
1. 强制同步@angular/material版本
直接在package.json里把@angular/material的版本改成和Angular核心一致的19.0.1:
"@angular/material": "19.0.1",
然后执行安装命令:
npm install
2. 彻底清理依赖环境
如果同步版本后仍有问题,彻底清理依赖再重建:
- 删除node_modules和锁文件:
rm -rf node_modules package-lock.json
- 重新安装所有依赖:
npm install
- 再次检查依赖树,确认所有@angular/core实例都是19.0.1:
npm ls @angular/core
3. 用npm overrides强制版本统一
如果某些间接依赖偷偷引入了低版本或高版本的@angular/core,在package.json里加overrides字段强制覆盖所有相关包的版本:
"overrides": { "@angular/core": "19.0.1", "@angular/common": "19.0.1", "@angular/material": "19.0.1" }
执行npm install生效。
4. 检查Supabase服务的注入规范
确保你的Supabase服务是严格按照Angular依赖注入规则写的:
- 服务类必须加
@Injectable({ providedIn: 'root' })装饰器 - 绝对不能在静态方法、非Angular管理的类实例里调用
inject()
验证方法
- 运行
npm ls @angular/core,确保输出里所有@angular/core的版本都是19.0.1,没有分叉的版本号 - 启动项目,查看控制台是否还会弹出NG0203错误
- 如果还是有问题,新建一个极简测试组件,只引入@angular/material的一个组件和Supabase服务,逐步排查是不是某个特定组件或服务的注入写法有问题
内容的提问来源于stack exchange,提问作者tcrawley11
相关产品推荐
相关产品推荐

