能否修改node_modules下指定包的package.json解决React版本不匹配报错
问题解答
直接修改node_modules下redux-form的package.json是否可行
- 仅临时验证问题可以这么操作:直接修改node_modules内文件的改动只会在当前本地环境生效,每次重新执行
npm install/yarn install后改动都会被覆盖,团队协作时其他成员的环境也无法同步该修改。 - 你可以先临时修改redux-form包package.json里的peerDependencies react版本为
^17.0.2,重启项目验证invalid hook call报错是否消失,以此确认是不是版本限制导致的多React实例问题。
长期可落地的解决方案
如果验证后确认是该问题导致的报错,可以用以下方式替代直接修改node_modules文件:
- 如果你使用的npm版本≥8.3,可以在项目根目录的package.json中添加
overrides配置,强制指定redux-form依赖的React版本:
{ "overrides": { "redux-form": { "react": "^17.0.2" } } }
- 如果你使用yarn作为包管理器,可以用
resolutions字段实现相同效果:
{ "resolutions": { "redux-form/react": "^17.0.2" } }
- 更稳妥的方案是将redux-form升级到支持React17的版本,或者替换为仍在维护的表单状态管理库,redux-form已经停止维护多年,后续还可能出现其他兼容性问题。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

