You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
}

解决方案

  1. 锁定react与react-test-renderer版本一致
    react和react-test-renderer必须严格同版本,当前未显式声明react-test-renderer,导致npm自动拉取的版本与react不匹配。在devDependencies中添加:

    "react-test-renderer": "18.2.0"
    
  2. 更新测试库依赖到兼容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"
    
  3. 清理缓存并重新安装依赖
    执行以下命令清除旧依赖和缓存:

    rm -rf node_modules package-lock.json
    npm install
    
  4. 本地验证后再执行构建
    先在本地运行npm install确认无报错,再执行eas build。

内容的提问来源于stack exchange,提问作者Josh Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:06:50