Monorepo中RTK Query报错:未找到react-redux上下文值求助
解决RTK Query找不到React-Redux Context的问题
问题背景
维护一个包含多版本Redux Toolkit的Monorepo应用,执行yarn-deduplicate && yarn install后,调用RTK Query的API Hook时出现报错:
RTK Query Error: could not find react-redux context value; please ensure the component is wrapped in a
已在入口文件配置<Provider>,注释RTK Query Hook后Redux Store可正常使用。
核心原因
Monorepo环境下,yarn-deduplicate可能未彻底消除react-redux或@reduxjs/toolkit的多版本实例,导致:
<Provider>使用的是某一版本的React-Redux Context- RTK Query Hook使用的是另一版本的Context
两者上下文不匹配,因此Hook无法识别Provider。
解决方案
1. 检查依赖重复情况
执行以下命令确认是否存在多版本依赖:
yarn list react-redux yarn list @reduxjs/toolkit
如果输出结果显示多个版本(比如根包和子包各有一个版本),说明存在重复实例问题。
2. 强制锁定依赖版本
在Monorepo根目录的package.json中添加resolutions字段,统一锁定依赖版本:
"resolutions": { "react-redux": "^8.0.2", "@reduxjs/toolkit": "^1.8.5" }
执行yarn install重新安装依赖,确保所有子包都使用指定的统一版本。
3. 验证导入一致性
检查所有子包中导入react-redux、@reduxjs/toolkit相关模块的路径,确保没有子包单独安装了这些依赖(即所有导入都来自根包的node_modules)。
4. 清除缓存并重装
如果上述步骤无效,执行以下操作彻底清理:
yarn cache clean rm -rf node_modules yarn.lock yarn install
额外检查点
- 确认Store配置中正确添加了RTK Query的reducer和middleware(你的代码中这部分配置是正确的)
- 确保
useFetchAllQuery的导入路径正确,没有从其他子包的独立RTK实例中导入
内容的提问来源于stack exchange,提问作者Carlos Damian Perez
相关产品推荐
相关产品推荐

