React依赖降级异常:从18降至17.0.2遇npm peer依赖冲突
问题原因
你把react和react-dom降级到17.0.2,但项目里当前的@testing-library/react@13.4.0是为React 18设计的版本——它的peer依赖明确要求react@^18.0.0和react-dom@^18.0.0。npm在解析依赖时会严格校验peer依赖的版本匹配性,所以会抛出冲突警告。
create-react-app创建React 18项目时,会自动安装适配React 18的测试库版本。你只降级了核心的react/react-dom,却没有同步调整@testing-library/react的版本,这就是问题的核心。哪怕删除node_modules和package-lock.json,npm重新安装时还是会按照package.json里指定的@testing-library/react版本拉取依赖,自然会和你设置的17.x版本的react/react-dom产生冲突。
解决方法
- 打开项目的
package.json,找到@testing-library/react,将版本改为适配React 17的稳定版本,比如^12.1.5(这是支持React 17的最后一个大版本) - 同步检查其他测试相关依赖:
@testing-library/jest-dom可以用^5.16.5,@testing-library/user-event用^13.5.0,这些版本都和React 17兼容 - 执行命令删除旧依赖和锁文件:
# macOS/Linux rm -rf node_modules package-lock.json # Windows rmdir /s /q node_modules && del package-lock.json - 最后运行
npm install,此时所有依赖版本匹配,peer依赖冲突警告会消失
内容的提问来源于stack exchange,提问作者SwedishFish
相关产品推荐
相关产品推荐

