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

使用react-native-nordic-dfu时NativeModules无RNNordicDfu属性致崩溃求助

React Native Nordic DFU 库调用崩溃问题解决方案

问题描述

使用react-native-nordic-dfu库时,调用后应用崩溃,报错:
TypeError: Cannot read property 'startDFU' of undefined

错误出现在node_modules\react-native-nordic-dfu\index.js第2行,该行通过const { RNNordicDfu } = NativeModules;定义RNNordicDfu,但打印发现NativeModules中无此属性。已尝试重新安装包但无效。

项目依赖:

"dependencies": {
    "buffer": "^6.0.3",
    "convert-string": "^0.1.0",
    "expo": "~47.0.12",
    "expo-splash-screen": "~0.17.5",
    "expo-status-bar": "~1.4.2",
    "react": "18.1.0",
    "react-native": "0.70.8",
    "react-native-ble-manager": "^8.6.0",
    "react-native-nordic-dfu": "^3.2.1",
    "react-native-quick-base64": "^2.0.5"
  },

当前Node版本:v18.15.0,测试设备:三星Galaxy S22 Ultra。

解决方案

  • 手动触发链接并清理构建
    React Native 0.60+支持自动链接,但部分库可能存在兼容问题,执行以下命令手动链接:

    npx react-native link react-native-nordic-dfu
    

    链接完成后清理缓存并重新构建:

    npx react-native clean
    cd android && ./gradlew clean
    cd .. && npx react-native run-android
    
  • 验证Android原生配置
    检查android/app/src/main/java/[你的包名]/MainApplication.java,确认RNNordicDfuPackage已添加到getPackages()方法:

    import no.nordicsemi.android.dfu.RNNordicDfuPackage;
    
    @Override
    protected List<ReactPackage> getPackages() {
      List<ReactPackage> packages = new PackageList(this).getPackages();
      packages.add(new RNNordicDfuPackage());
      return packages;
    }
    

    同时检查android/settings.gradle是否包含:

    include ':react-native-nordic-dfu'
    project(':react-native-nordic-dfu').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-nordic-dfu/android')
    
  • 确认版本兼容性
    检查react-native-nordic-dfu@3.2.1是否支持React Native 0.70.8,尝试升级到最新版本:

    npm install react-native-nordic-dfu@latest --save
    

    升级后重复清理、构建步骤。

  • 适配Expo环境
    若使用Expo managed workflow,react-native-nordic-dfu可能不兼容,需切换到bare workflow或寻找替代库;若已为bare workflow,执行预构建清理:

    expo prebuild --clean
    
  • 彻底清理依赖与缓存
    删除node_modules、锁文件后重新安装:

    rm -rf node_modules package-lock.json
    npm install
    

    清除Metro缓存:

    npx react-native start --reset-cache
    

内容的提问来源于stack exchange,提问作者Ash West

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:52:58