Expo React Native安卓构建失败:依赖冲突问题求助
React Native Expo构建安卓版本npm依赖冲突解决办法
执行eas build构建安卓版本时多次失败,报错信息如下:
Running "npm install" in the root dir of your repository [stderr] ERR! ERESOLVE could not resolve [stderr] npm ERR! [stderr] npm ERR! While resolving: @testing-library/jest-native@5.4.1 [stderr] npm ERR! Found: react@18.1.0 [stderr] npm ERR! node_modules/react [stderr] npm [stderr] ERR! react@"18.1.0" from the root project [stderr] npm ERR! peer react@">=16.3.0" from @callstack/react-theme-provider@3.0.8 [stderr] npm ERR! node_modules/@callstack/react-theme-provider [stderr] npm ERR! @callstack/react-theme-provider@"^3.0.8" from react-native-paper@5.2.0 [stderr] npm ERR! node_modules/react-native-paper [stderr] npm ERR! react-native-paper@"^5.2.0" from the root project [stderr] npm ERR! 24 more (@react-native-firebase/app, @react-navigation/core, ...) [stderr] npm ERR! Could not resolve dependency: [stderr] npm ERR! peer react-test-renderer@">=16.0.0" from @testing-library/jest-native@5.4.1 [stderr] npm ERR! node_modules/@testing-library/jest-native [stderr] npm ERR! dev @testing-library/jest-native@"^5.4.1" from the root project [stderr] npm ERR! Conflicting peer dependency: react@18.2.0 [stderr] npm ERR! node_modules/react [stderr] npm ERR! peer react@"^18.2.0" from react-test-renderer@18.2.0 [stderr] npm ERR! node_modules/react-test-renderer [stderr] npm ERR! peer react-test-renderer@">=16.0.0" from @testing-library/jest-native@5.4.1 [stderr] npm ERR! node_modules/@testing-library/jest-native [stderr] npm ERR! dev @testing-library/jest-native@"^5.4.1" from the root project [stderr] npm ERR! Fix the upstream dependency conflict, or retry [stderr] npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! See /home/expo/.npm/eresolve-report.txt for a full report. [stderr] [stderr] npm ERR! A complete log of this run can be found in: [stderr] npm ERR! /home/expo/.npm/_logs/2023-02-22T06_54_51_705Z-debug-0.log npm exited with non-zero code: 1
项目的package.json内容:
{ "name": "gig-fort", "version": "1.0.0", "scripts": { "start": "expo start --dev-client", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", "test": "jest" }, "jest": { "preset": "jest-expo", "setupFiles": [ "./node_modules/react-native-gesture-handler/jestSetup.js" ], "transformIgnorePatterns": [ "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)" ] }, "dependencies": { "@expo/html-elements": "^0.2.2", "@react-native-firebase/app": "^16.5.0", "@react-native-firebase/app-check": "^16.5.0", "@react-navigation/native": "^6.1.1", "@react-navigation/native-stack": "^6.9.7", "@react-navigation/stack": "^6.3.10", "@sentry/react-native": "^4.14.0", "@types/react": "~18.0.24", "@types/react-native": "~0.70.6", "date-fns": "^2.29.3", "dotenv": "^16.0.3", "expo": "^47.0.12", "expo-application": "^5.0.1", "expo-asset": "^8.7.0", "expo-constants": "^14.0.2", "expo-dev-client": "^2.0.1", "expo-device": "^5.0.0", "expo-font": "^11.0.1", "expo-splash-screen": "~0.17.5", "expo-status-bar": "~1.4.2", "expo-updates": "^0.15.6", "firebase": "^9.15.0", "jest-expo": "^47.0.1", "lottie-react-native": "^5.1.5", "react": "^18.2.0", "react-native": "0.70.5", "react-native-gesture-handler": "^2.8.0", "react-native-maps": "^1.3.2", "react-native-paper": "^5.2.0", "react-native-safe-area-context": "4.4.1", "react-native-screens": "~3.18.0", "sentry-expo": "~6.0.0", "typescript": "^4.6.3" }, "devDependencies": { "@babel/core": "^7.12.9", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react-native": "^11.5.0", "jest": "^29.3.1" }, "private": true }
解决方案
锁定react与react-test-renderer版本一致
react和react-test-renderer必须严格同版本,当前未显式声明react-test-renderer,导致npm自动拉取的版本与react不匹配。在devDependencies中添加:"react-test-renderer": "18.2.0"更新测试库依赖到兼容react 18的版本
当前使用的@testing-library/react-native@11.5.0对应的@testing-library/jest-native版本对react 18支持不足,将其升级到兼容版本:"@testing-library/react-native": "^12.1.2", "@testing-library/jest-native": "^5.4.3"清理缓存并重新安装依赖
执行以下命令清除旧依赖和缓存:rm -rf node_modules package-lock.json npm install本地验证后再执行构建
先在本地运行npm install确认无报错,再执行eas build。
内容的提问来源于stack exchange,提问作者Josh Simon
相关产品推荐
相关产品推荐

