Gatsby 3.13 + React 17 环境安装react-spring出现ERESOLVE报错如何解决
问题原因分析
该报错既不是React 17也不是Gatsby的兼容性问题,根因是你安装的全量react-spring包自带的@react-spring/zdog可选依赖,其下游依赖react-reconciler@0.20.4仅兼容React 16版本,和你项目里的React 17产生了依赖树冲突。
解决方案
方案1(最推荐):按需安装react-spring子包
绝大多数场景下不需要安装全量的react-spring,只需要安装对应平台的子包即可,完全避开不必要的zdog相关依赖:
- 普通web端动画场景,执行以下命令安装即可:
npm i @react-spring/web
- 其他场景按需安装对应子包即可:three.js动画场景装
@react-spring/three,React Native动画场景装@react-spring/native,不需要的子包不安装即可完全规避本次依赖冲突。
方案2:强制覆盖依赖版本
如果确实需要使用全量react-spring的所有功能,可以通过npm的overrides配置强制指定兼容React17的react-reconciler版本:
- 在项目根目录的
package.json中添加如下配置:
{ "overrides": { "react-reconciler": "^0.26.2" } }
- 重新执行安装命令即可:
npm i react-spring
方案3:清理缓存后使用legacy-peer-deps参数
如果上述方案不生效,可以直接清空node_modules和锁文件后重新执行带参数的安装命令:
rm -rf node_modules package-lock.json npm i react-spring --legacy-peer-deps
安装完成后启动Gatsby项目验证功能即可,本次冲突的依赖属于可选功能的下游依赖,只要你不使用zdog相关的动画能力,不会影响项目正常运行。
内容的提问来源于stack exchange,提问作者Greed94
相关产品推荐
相关产品推荐

