【发布时间】:2022-09-27 15:35:42
【问题描述】:
我正在开发一个旧的 React Native 应用程序,并希望将 RN 版本从版本 ^0.64.2 升级到 0.70.1。使用命令npx react-native upgrade后,依赖的版本号有变化。我还按照document 中的说明在andriod\\app 文件夹中编辑build.gradle:
project.ext.react = [
enableHermes: true // clean and rebuild if changing
]
...
dependencies {
...
if (enableHermes) {
def hermesPath = \"../../node_modules/hermes-engine/android/\";
debugImplementation files(hermesPath + \"hermes-debug.aar\")
releaseImplementation files(hermesPath + \"hermes-release.aar\")
} else {
implementation jscFlavor
}
...
}
之后,我在 android 文件夹中运行命令 ./gradlew clean 并运行 npx react-native run-android。然后出现此错误:
BUILD FAILED in 9s
error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task \':app:checkDebugAarMetadata\'.
> Could not resolve all files for configuration \':app:debugRuntimeClasspath\'.
> Failed to transform hermes-debug.aar to match attributes {artifactType=android-aar-metadata}.
> Execution failed for JetifyTransform: D:\\{ProjectFolder}\\node_modules\\hermes-engine\\android\\hermes-debug.aar.
> Transform\'s input file does not exist: D:\\{ProjectFolder}\\node_modules\\hermes-engine\\android\\hermes-debug.aar. (See https://issuetracker.google.com/issues/158753935)
过了一会儿,我还发现node_modules 文件夹中没有hermes-engine 文件夹,但仍然不知道该怎么办。
这是我的 package.json:
{
\"name\": \"MyApp\",
\"version\": \"1.0.0\",
\"private\": true,
\"scripts\": {
\"android\": \"react-native run-android\",
\"ios\": \"react-native run-ios\",
\"start\": \"react-native start\",
\"test\": \"jest\",
\"lint\": \"eslint .\"
},
\"dependencies\": {
\"@notifee/react-native\": \"^3.0.4\",
\"@react-native-async-storage/async-storage\": \"^1.17.10\",
\"@react-native-community/art\": \"^1.2.0\",
\"@react-native-community/datetimepicker\": \"^3.5.2\",
\"@react-native-firebase/app\": \"^12.9.0\",
\"@react-native-firebase/messaging\": \"^12.9.0\",
\"@react-navigation/material-top-tabs\": \"^6.2.1\",
\"@react-navigation/native\": \"^6.0.1\",
\"@react-navigation/stack\": \"^6.2.1\",
\"axios\": \"^0.24.0\",
\"fbjs\": \"^3.0.4\",
\"jest\": \"^26.6.3\",
\"jwt-decode\": \"^3.1.2\",
\"moment\": \"^2.29.3\",
\"moment-timezone\": \"^0.5.34\",
\"prop-types\": \"^15.8.1\",
\"react\": \"18.1.0\",
\"react-native\": \"0.70.1\",
\"react-native-biometrics\": \"^2.1.4\",
\"react-native-camera\": \"^3.35.0\",
\"react-native-chart-kit\": \"^6.12.0\",
\"react-native-elements\": \"^2.0.4\",
\"react-native-file-viewer\": \"^2.1.1\",
\"react-native-fs\": \"^2.20.0\",
\"react-native-gesture-handler\": \"^1.10.3\",
\"react-native-image-crop-picker\": \"^0.32.2\",
\"react-native-modal\": \"^11.5.6\",
\"react-native-pager-view\": \"^5.4.24\",
\"react-native-pdf\": \"^6.2.0\",
\"react-native-picker-select\": \"^8.0.0\",
\"react-native-pie-chart\": \"^2.0.2\",
\"react-native-render-html\": \"^6.3.4\",
\"react-native-safe-area-context\": \"^3.0.2\",
\"react-native-screens\": \"^3.13.1\",
\"react-native-simple-toast\": \"^1.1.2\",
\"react-native-svg\": \"^12.1.1\",
\"react-native-swipe-list-view\": \"^3.2.9\",
\"react-native-tab-view\": \"^3.1.1\",
\"react-native-vector-icons\": \"^7.0.0\",
\"react-navigation\": \"^4.4.0\",
\"react-query\": \"^3.34.2\",
\"react-redux\": \"^7.2.0\",
\"redux\": \"^4.0.5\",
\"redux-devtools-extension\": \"^2.13.8\",
\"redux-thunk\": \"^2.3.0\",
\"toggle-switch-react-native\": \"^3.3.0\"
},
\"devDependencies\": {
\"@react-native-community/eslint-config\": \"^2.0.0\",
\"babel-plugin-root-import\": \"^6.5.0\",
\"eslint\": \"^7.14.0\",
\"react-test-renderer\": \"^17.0.1\"
},
\"jest\": {
\"preset\": \"react-native\"
}
}
更新: 编辑 package.json 并使用npm install 添加hermes-engine 后仍然出现错误。以下是错误:
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: react-query@3.34.2
npm ERR! Found: react@18.1.0
npm ERR! node_modules/react
npm ERR! react@\"18.1.0\" from the root project
npm ERR! peer react@\"*\" from @jsamr/react-native-li@2.3.1
npm ERR! node_modules/@jsamr/react-native-li
npm ERR! @jsamr/react-native-li@\"^2.3.0\" from react-native-render-html@6.3.4
npm ERR! node_modules/react-native-render-html
npm ERR! react-native-render-html@\"^6.3.4\" from the root project
npm ERR! 27 more (@react-native-community/art, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@\"^16.8.0 || ^17.0.0\" from react-query@3.34.2
npm ERR! node_modules/react-query
npm ERR! react-query@\"^3.34.2\" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: react@17.0.2
npm ERR! node_modules/react
npm ERR! peer react@\"^16.8.0 || ^17.0.0\" from react-query@3.34.2
npm ERR! node_modules/react-query
npm ERR! react-query@\"^3.34.2\" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
-
尝试使用 --force 运行命令
标签: android react-native upgrade