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

升级React Native至0.76.9后因“对非空接收者Jvm!进行不必要的安全调用”构建失败(已指定-Werror)

升级React Native至0.76.9后因“对非空接收者Jvm!进行不必要的安全调用”构建失败(已指定-Werror)

最近把React Native从0.73.9升级到0.76.9之后,构建项目时直接碰到了这个报错:

> Task :gradle-plugin:react-native-gradle-plugin:compileKotlin FAILED
e: warnings found and -Werror specified
w: file:///<PROJECT_LOCATION>/node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt:97:35 Unnecessary safe call on a non-null receiver of type Jvm!

FAILURE: Build failed with an exception.

这个问题的根源很明确:React Native官方的gradle插件代码里有个小疏漏——在第97行对一个非空类型的Jvm!对象用了不必要的安全调用(?.),而你的项目构建时开启了-Werror选项,会把所有警告都当成错误处理,所以直接导致构建失败。

给你几个可行的解决思路:

  • 临时绕过(快速解决):
    可以先暂时关闭-Werror选项,让构建忽略这个警告。找到项目android/build.gradle文件,检查subprojects里的kotlinOptions配置,把freeCompilerArgs中的"-Werror"移除掉,比如:

    subprojects {
        afterEvaluate { project ->
            if (project.hasProperty("kotlinOptions")) {
                project.kotlinOptions.freeCompilerArgs -= "-Werror"
            }
        }
    }
    

    不过这个方法只是临时方案,长期来看还是建议处理掉警告本身。

  • 直接修复插件代码:
    找到项目根目录下的node_modules/@react-native/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt文件,定位到第97行,把里面的安全调用?.改成普通的.调用就行。因为Jvm!本身是非空类型,完全不需要安全调用。改完之后重新执行构建命令,应该就能正常通过了。

  • 等待官方修复:
    如果不想手动修改依赖包代码,可以关注React Native的官方更新,看看有没有针对这个问题的修复补丁,等官方发布新版本的gradle插件后,直接升级就能解决。

备注:内容来源于stack exchange,提问作者MikeL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:12:57