支持ngrx/data的适配Angular版本及兼容报错排查
报错根因
你遇到的两类报错本质都是NgRx与Angular版本不匹配导致的:
- 类型报错提示
ɵɵFactoryDeclaration/ɵɵInjectableDeclaration不存在,是因为你安装的NgRx/data版本过高,调用了Angular 12及以上版本才提供的内部编译API,你当前使用的Angular 11.2.14没有这些导出成员 - ESM模块导入
BehaviorSubject报错,是因为高版本NgRx的模块输出格式和Angular 11配套的构建工具链不兼容
反复删除node_modules和package-lock.json重新安装依赖解决不了这个问题,只要版本不匹配就会持续报错。
适配版本规则
NgRx全家桶(包含@ngrx/store、@ngrx/effects、@ngrx/entity、@ngrx/data)和Angular是严格的大版本对齐关系,大版本号必须完全一致才能正常运行:
- 如果你要保留当前Angular 11.2.x的开发环境,所有NgRx相关包必须安装11.x大版本
- 如果你要跟着参考的NgRx v12教程实操,需要将整个Angular项目升级到Angular 12.x大版本,对应安装12.x版本的NgRx全家桶
- 后续如果升级Angular到13及以上版本,NgRx也要同步升级到相同大版本,否则会复现同类报错
快速修复方案(无需升级Angular)
直接执行命令安装适配Angular 11的NgRx版本即可:
npm install @ngrx/store@11 @ngrx/effects@11 @ngrx/entity@11 @ngrx/data@11 --save
安装完成后重新执行ng serve启动项目,现有报错会全部消失。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

