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

React Native重装node_modules后报Kotlin版本冲突错误

问题说明
  • 原有React Native项目运行正常,删除node_modules与package-lock.json后重装依赖,执行npm run android启动安卓端时抛出大量编译错误,Linux、Windows双端均可复现。
  • 核心报错日志:
e: /home/abdelhamied/work/personal/ghaith-app/node_modules/react-native-navigation/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt: (76, 28): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16.
The class is loaded from /home/abdelhamied/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.5.30/d68efdea04955974ac1020f8f66ef8176bfbce1f/kotlin-stdlib-1.5.30.jar!/kotlin/Unit.class
  • 原项目根目录build.gradle配置如下:
buildscript {
    ext {
        RNNKotlinVersion = "1.3.61"
        buildToolsVersion = "30.0.2"
        minSdkVersion = 21
        compileSdkVersion = 30
        targetSdkVersion = 30
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
        classpath("com.android.tools.build:gradle:3.5.3")
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            // Android JSC is installed from npm
            url("$rootDir/../node_modules/jsc-android/dist")
        }

        google()
        jcenter()
        maven { url 'https://www.jitpack.io' }
    }
}
  • 尝试将Kotlin版本从1.3.61修改为1.7.0后,仍然提示Kotlin版本冲突错误。
故障原因

删除package-lock.json后重新安装依赖时,react-native-navigation(简称RNN)被自动升级到了依赖Kotlin 1.5+的新版本,原有项目配置的Kotlin 1.3.61版本过低,无法兼容新版RNN编译出的Kotlin字节码。直接升级Kotlin到1.7.0后仍报错,是因为原项目的Android Gradle插件版本过低不兼容Kotlin 1.7+,且没有同步对齐RNN的Kotlin版本配置、清理旧构建缓存。

修复步骤
  1. 对齐版本配置
    修改根目录build.gradle的buildscript配置块,不要盲目跨大版本升级到Kotlin 1.7.0,选择和报错中匹配的1.5.x版本即可,同时升级Android Gradle插件到兼容版本,修改后配置如下:
buildscript {
    ext {
        // 和下方kotlin-gradle-plugin版本保持完全一致
        RNNKotlinVersion = "1.5.31"
        buildToolsVersion = "30.0.2"
        minSdkVersion = 21
        compileSdkVersion = 30
        targetSdkVersion = 30
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        // Kotlin插件版本和上方RNNKotlinVersion完全对齐
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
        // 原3.5.3版本Gradle插件不兼容Kotlin 1.5+,升级到匹配的4.1.3版本
        classpath("com.android.tools.build:gradle:4.1.3")
    }
}
  1. 调整Gradle Wrapper版本
    打开项目下android/gradle/wrapper/gradle-wrapper.properties文件,将Gradle版本升级到和Android Gradle插件4.1.3匹配的版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
  1. 彻底清理所有旧缓存
    在项目根目录依次执行对应命令,清理残留的旧依赖和构建缓存:
# 清理npm依赖缓存
rm -rf node_modules
npm cache clean --force

# 清理安卓构建缓存
cd android
# macOS/Linux执行以下命令
./gradlew clean
rm -rf .gradle
rm -rf ~/.gradle/caches
# Windows执行以下命令
# gradlew.bat clean
# 手动删除项目android目录下的.gradle文件夹,以及C:\Users\当前用户名\.gradle路径下的caches文件夹

cd ..
# 重新安装npm依赖
npm install
  1. 重新启动项目
    执行npm run android即可正常编译运行。

注意:package-lock.json的作用是锁定所有依赖的安装版本,避免不同时间、不同设备安装时出现依赖隐式升级导致的兼容问题,日常开发不要随意删除该文件。

内容的提问来源于stack exchange,提问作者Abdelhamied mostafa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:54:40