首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应-原生的,BleManager“本机模块不能为空”

反应-原生的,BleManager“本机模块不能为空”
EN

Stack Overflow用户
提问于 2017-10-07 12:35:58
回答 2查看 2.7K关注 0票数 2

我想试一试来自Polidea的react原生的plx库。

https://github.com/Polidea/react-native-ble-plx

因此,我在终端中创建了一个新的应用程序,并安装了这个库。

代码语言:javascript
复制
create-react-native-app playground

npm install --save react-native-ble-plx

react-native link react-native-ble-plx

然后运行npm start,然后运行i (用于在iOS模拟器中打开)

然后我得到了以下错误(在终端和模拟器中)

  • 本机模块不能为空。
  • 不变量的node_modules/react-native/node_modules/fbjs/lib/invariant.js:44:24
  • node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js:31:16 in NativeEventEmitter
  • node_modules/react-native-ble-plx/src/BleManager.js:52:25 in BleManager
  • 应用程序中的App.js:8:19
  • node_modules/react-native/Libraries/Renderer/ReactNativeStack-dev.js:1679:33 in
  • node_modules/react-native/Libraries/Renderer/ReactNativeStack-dev.js:1610:15 in measureLifeCyclePerf
  • .从框架内部再增加52个堆栈帧

下面是App.js中的代码:

代码语言:javascript
复制
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import {BleManager} from 'react-native-ble-plx';

//importing BleManager without calling new BleManager() works

export default class App extends React.Component {
  constructor(){
    super();
    this.manager = new BleManager();
  }

  //calling new BleManager() leads to error

  render() {
    return (
      <View style={styles.container}>
        <Text>nothing, just sucking errors</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

这是文件package.json

代码语言:javascript
复制
{
  "name": "playground",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "react-native-scripts": "1.5.0",
    "jest-expo": "^21.0.2",
    "react-test-renderer": "16.0.0-alpha.12"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "node node_modules/jest/bin/jest.js --watch"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "expo": "^21.0.0",
    "react": "16.0.0-alpha.12",
    "react-native": "^0.48.4",
    "react-native-ble-plx": "^0.6.3"
  }
}

我已经在找人帮忙了

代码语言:javascript
复制
 npm -rm rf node_modules
 npm install

但没什么用。

这是我的系统信息:

macOS高塞拉 iMac (27英寸,2010年中部) 处理器2.8 GHz Intel Core i5 内存16 GB 1333 MHz DDR3

在我的iPhone(6s,10.3.1)中打开应用程序时,我也遇到了同样的错误(在从npm开始扫描终端中的QR代码之后)

其他没有反应本机plx库的应用程序正常工作。

期待着得到一些帮助。

提前谢谢。

弗兰克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-10 12:21:39

您已经使用创建-反应-本机-应用程序来创建您的反应本地项目。因此,您不能使用该项目的反应-本机-plx库。因为要访问蓝牙硬件,react本机plx包有一些本机代码分别用android和ios编写。

如果你想构建你的应用程序,你需要从创建-反应-本机应用程序中弹出,并使用Xcode和Android。

使用以下命令:--

代码语言:javascript
复制
npm install -g react-native-cli
npm run eject
react-native link react-native-ble-plx
  • 第一条命令是在全局上安装cli。
  • 第二个命令是将您的项目从世博会项目转换为定期响应本地项目
  • 第三个命令是链接反应-本机-可-plx。因为很可能你之前的链接失败了。
票数 0
EN

Stack Overflow用户

发布于 2019-02-04 18:09:15

我所做的是(在我开始之前,通过放弃git更改完全删除了ble)。

导航到/node_modules/react-native-ble-plx/ios/BleClient.xcodeproj和

  1. 我把它放到了项目导航器的“库”文件夹中
  2. 然后,我使用库进入目标->构建阶段->链接二进制,并添加了libBleClient.a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46620192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档