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

react-native-ble-plx报Malformed calls from JS错误 已确认UUID正确如何排查

问题根因与修复方案

你遇到的Malformed calls from JS: field sizes are different报错本质是JS层传递给原生层的参数数量、类型不匹配,结合你的代码具体问题如下:

    1. readCharacteristicForService方法调用参数错误
      react-native-ble-plx的readCharacteristicForService方法仅支持Promise调用形式,不支持传入回调函数作为第三个参数。你额外传入的回调导致JS和原生层参数个数不匹配,直接触发该报错。
      正确写法要改用.then()或者await接收返回值:
// 错误写法
device.readCharacteristicForService(service, characteristicN,(error, characteristic) => {
  // 回调逻辑
})

// 正确写法
try {
  const characteristic = await device.readCharacteristicForService(service, characteristicN)
  this.updateValue(characteristic.uuid, characteristic.value)
} catch (error) {
  this.error(error.message)
}
    1. 特征值UUID类型错误
      你的notifyUUID方法直接返回数字类型的0/1/2/3,但BLE特征值UUID必须是符合规范的字符串(16位/32位/128位格式),就算是缩写的16位UUID也要是字符串格式,比如"0001",你传数字类型会导致原生层解析失败。
      你需要修改notifyUUID方法,返回对应传感器真实的特征值UUID字符串:
notifyUUID(num) {
  // 示例,替换为你设备实际的特征值UUID
  const uuidMap = {
    0: "0000aaa1-0000-1000-8000-00805f9b34fb",
    1: "0000aaa2-0000-1000-8000-00805f9b34fb",
    2: "0000aaa3-0000-1000-8000-00805f9b34fb",
    3: "0000aaa4-0000-1000-8000-00805f9b34fb"
  }
  return uuidMap[num]
}
    1. 服务UUID格式错误
      你当前的服务UUID是"000f0f0-0000-1000-8000-00805f9b34fb",128位UUID第一段要求为8位十六进制字符,你这里少了一位,正确格式应该是"0000f0f0-0000-1000-8000-00805f9b34fb",请对照你设备实际的服务UUID修正。
    1. 异步逻辑处理不当
      setupNotifications是async函数,但你循环调用异步读取方法时没有加await,会导致多个异步请求并发冲突,建议循环内增加await控制时序:
async setupNotifications(device) {
  for (const id in this.sensors) {
    const service = this.serviceUUID(id)
    const characteristicN = this.notifyUUID(id)
    try {
      const characteristic = await device.readCharacteristicForService(service, characteristicN)
      this.updateValue(characteristic.uuid, characteristic.value)
    } catch (error) {
      this.error(error.message)
    }
  }
}
    1. 权限逻辑缺失
      你定义了requestPermission方法但没有在扫描前调用,且Android 12及以上版本还需要额外申请BLUETOOTH_SCAN、BLUETOOTH_CONNECT权限,否则会出现扫描不到设备、连接失败的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:15:03