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

WatermelonDB 0.27.1与React Native 0.76.5等环境兼容问题咨询

问题描述

我创建了全新的React Native TypeScript项目:

npx @react-native-community/cli init ReactNativeTry

项目可正常构建运行。随后我按照文档添加WatermelonDB依赖:

npm install @nozbe/watermelondb
npm install -D @babel/plugin-proposal-decorators

并配置了babel.config.js、android/settings.gradle、android/app/build.gradle及MainApplication.kt。但重启Metro并构建时出现错误:

ReactNativeTry/node_modules/@nozbe/watermelondb/native/android-jsi/src/main/java/com/nozbe/watermelondb/jsi/WatermelonDBJSIPackage.java:3: error: cannot find symbol
import com.facebook.react.bridge.JSIModulePackage;
^
symbol: class JSIModulePackage
location: package com.facebook.react.bridge

此前我在React Native 0.73.0(纯JS)搭配WatermelonDB ^0.27.1时无此问题。当前环境:Node.js 20.15.1、JDK 17.0.5。若切换至Liberica-JDK 21.0.4并直接构建Android应用,会出现新错误:

Caused by: com.android.ide.common.process.ProcessException: Error while executing process /Library/Java/JavaVirtualMachines/graalvm-jdk-17.0.8+9.1/Contents/Home/bin/jlink with arguments {--module-path /Users/foo/.gradle/caches/8.10.2/transforms/ed9dc1d835b24de942cfe9ca348bc72b-a5dbfd8c-5326-4795-9959-cc93879e9234/transformed/output/temp/jmod --add-modules java.base --output /Users/foo/.gradle/caches/8.10.2/transforms/ed9dc1d835b24de942cfe9ca348bc72b-a5dbfd8c-5326-4795-9959-cc93879e9234/transformed/output/jdkImage --disable-plugin system-modules}

且构建时仍使用GraalVM-JDK 17而非JDK 21。此项目为纯React Native应用,未添加Reanimated等特殊库。现咨询这些库、JDK及Node.js是否兼容?


解决方案与兼容性说明

1. JSIModulePackage 找不到的根本原因

这个错误是React Native版本与WatermelonDB版本不匹配导致的:

  • React Native 0.74+ 移除了JSIModulePackage类(旧版RN中用于注册JSI模块的API),而当前安装的WatermelonDB版本仍依赖该废弃API。
  • 此前RN 0.73.0 + WatermelonDB ^0.27.1正常运行,是因为RN 0.73仍保留该类,但新版RN(当前项目应为0.74+)已移除。

解决办法:

  • 升级WatermelonDB到兼容RN 0.74+的版本:安装@nozbe/watermelondb@0.28.0及以上(该版本适配了RN 0.74的API变更)。
  • 若需保留旧版RN,可锁定RN版本为0.73.x,继续使用WatermelonDB ^0.27.1。

2. JDK兼容性问题

  • React Native官方要求:RN 0.74+推荐使用JDK 17,暂不支持JDK 21(Android Gradle Plugin对JDK 21的支持仍存在兼容性问题)。
  • 构建时仍用GraalVM-JDK 17,是因为系统环境变量或Android Studio的JDK配置未正确切换到JDK 21;即使切换,由于AGP不兼容,仍会出现jlink错误。

解决办法:

  • 保持使用JDK 17(官方推荐的Liberica JDK 17或Oracle JDK 17),避免使用JDK 21。
  • 若需切换JDK,确保:
    1. 系统环境变量中JAVA_HOME指向JDK 17路径。
    2. Android Studio的Project Structure中指定JDK为17版本。

3. Node.js兼容性

Node.js 20.x与RN 0.74+、WatermelonDB 0.28+完全兼容,无需调整。

总结兼容性矩阵

React Native版本WatermelonDB版本JDK版本Node.js版本
0.73.x^0.27.11718+/20+
0.74+^0.28.01718+/20+

内容的提问来源于stack exchange,提问作者Oleksii Pylypchuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:08:14