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

React Native Web项目安装@reduxjs/toolkit出现ERESOLVE依赖树错误如何解决?

依赖冲突根本原因
  • @reduxjs/toolkit@1.6.0的peerOptional依赖要求react版本为^16.14.0 || ^17.0.0,但你的项目中三个子包的react最高版本仅为16.12.0,mobile端react版本更是只有16.8.6,完全不符合版本要求
  • monorepo下存在多版本react-native冲突:common包依赖react-native@0.61.5,mobile包依赖react-native@0.60.5,两个版本本身不兼容,连带其绑定的peer依赖react、@react-native-community/cli版本也会发生冲突
  • @react-native-community/cli版本和react-native版本强绑定,react-native版本不统一的情况下必然会出现cli相关的冲突报错
解决方案

按实施成本从低到高排序:

方案一:短期临时绕过(无需修改依赖版本)

npm 7及以上版本默认开启peer依赖严格检查,你可以直接添加参数跳过检查即可正常安装:

npm install --legacy-peer-deps

只要你的业务代码没有用到redux toolkit依赖高版本react的特性,安装完成后就可以正常运行,是最快的解决办法。

方案二:降低redux toolkit版本(无需改动现有其他依赖)

你可以将@reduxjs/toolkit降到适配低版本react的版本,比如1.5.1,该版本的peer依赖要求仅为react≥16.8.0,刚好适配你项目中所有的react版本,操作步骤:

  1. 卸载common包中现有版本:npm uninstall @reduxjs/toolkit -w @monorepo/common
  2. 安装适配版本:npm install @reduxjs/toolkit@1.5.1 -w @monorepo/common
    该方案不会改动现有RN、react相关依赖,稳定性最高,适合不想调整现有项目版本的场景。

方案三:统一升级所有依赖(长期解决方案)

如果需要使用高版本redux toolkit的新特性,你需要统一所有子包的依赖版本:

  1. 把common、mobile包的react-native都升到同一个版本,比如0.66.x,对应的react版本同步升到17.0.2
  2. web端的react、react-dom也同步升级到17.0.2,react-native-web升到适配react 17的对应版本
  3. 所有react-native相关的工具依赖比如@types/react-native、@react-native-community/cli都升到和react-native版本匹配的版本
  4. 如果你使用的是npm 8及以上版本,可以在根package.json中添加overrides字段强制统一所有子包的依赖版本,避免多版本冲突:
{
  "overrides": {
    "react": "^17.0.2",
    "react-native": "^0.66.0"
  }
}
  1. 升级完成后删除所有node_modules文件夹和package-lock.json文件,重新执行npm install即可
    注意:升级RN版本需要同步修改安卓、iOS原生端的配置,如果你使用了expo框架还需要对应升级expo的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 08:30:03