@ngrx/store 5.2.0与@angular/core ^4.4.3是否兼容?编译报错求助
解决Angular 4.4.3项目中@ngrx/store 5.2.0的Metadata版本不匹配问题
嘿,这个问题我太熟了!你碰到的本质是Angular版本和NgRx版本不兼容——@ngrx/store 5.x系列是专门为Angular 5.x量身打造的,而你的项目用的是Angular 4.4.3,两者的元数据版本(metadata version)对不上,所以编译时直接报错了。这也解释了为什么你在Angular 5.2.0的模板里能正常跑,版本对应上了嘛~
给你两个靠谱的解决方向,按需选:
方案一:降级NgRx到兼容Angular 4的版本
NgRx 4.x是完全适配Angular 4的稳定版本,操作起来最简单,改动也最小:
- 先卸载当前的高版本NgRx:
npm uninstall @ngrx/store
- 安装适配Angular 4的NgRx 4.x稳定版(比如4.1.1):
npm install @ngrx/store@4.1.1 --save
安装完后记得检查下代码里有没有用NgRx 5特有的API(比如createAction这类新增语法),如果有的话要改成NgRx 4的传统写法(比如定义action类)。
方案二:升级Angular项目到5.x版本
如果你的项目允许升级Angular,也可以把项目升到5.2.0(和你之前的模板版本一致),这样就能和@ngrx/store 5.2.0完美兼容:
- 先升级Angular核心依赖:
npm install @angular/core@5.2.0 @angular/common@5.2.0 @angular/compiler@5.2.0 @angular/platform-browser@5.2.0 @angular/platform-browser-dynamic@5.2.0 @angular/router@5.2.0 --save
- 同步升级CLI和其他配套依赖(比如@angular/compiler-cli、构建工具等,根据你的项目实际情况调整)
- 运行
ng update(如果你的CLI版本支持的话)自动处理依赖兼容问题,再手动调整少量代码里的Angular版本差异点
个人更推荐方案一,因为升级Angular可能会牵扯到其他第三方依赖的兼容问题,降级NgRx的改动范围更小,风险更低。
最后验证一下:安装完成后跑npm run build或者ng build,如果没再出现Metadata版本不匹配的错误,就搞定啦!
内容的提问来源于stack exchange,提问作者axel
相关产品推荐
相关产品推荐

