react-native - 如何将本机模块作为依赖项集成到自定义模块/库中以响应本机
问题描述
我使用 react-native-create-library 创建了一个模块/库,用于处理自定义设备的特定 ble 程序,并为原生 ble 功能选择了 react-native-ble-manager。由于我没有在我的库中编写任何本机代码,我只是将我的模块导出到 index.js
import BleHandler from './src/BleHandler.js';
export default BleHandler;
然后我用 npm 打包了我的库,以便在测试应用程序中进行本地测试。直到这里一切都很好,我可以在测试应用程序中导入和使用我的模块。但是当我尝试初始化 ble 模块时,它失败了,因为它似乎不包含在 NativeModules 中:
[TypeError: null is not an object (evaluating 'bleManager.start')]
我在我的模块的 package.json 中包含了 ble 模块
"dependencies": {
"@react-native-community/async-storage": "^1.11.0",
"react": "16.13.1",
"react-native": "0.63.3",
"react-native-ble-manager": "^7.4.1",
"react-native-fs": "^2.16.6",
"react-native-windows": "^0.57.2"
}
但是当我签入时:
TestApplication/node_modules/my-module/node_modules
react-native-ble-manager 不存在。
我现在的问题是,是否甚至可以在模块内使用本机模块,如果可以,如何正确执行?
解决方案
您应该添加react-native-ble-manager
topeerDependencies
在您的库中,而不是在dependencies
. 然后你的库的用户将在他们的项目中安装本机模块dependencies
。
推荐阅读
- linux - ls 命令结果在 CIFS 挂载目录中的 docker 容器中不正确(通过 docker-compose)
- python - 导入图像并在其上绘制正方形
- arrays - 如何在 CPLEX 中将数组转换为集合?
- bash - 如何在 Shell 脚本/Yaml 中使用 YQ 查找和替换?
- algorithm - 子图的最小生成树?
- javascript - 事件函数会自动发生,不会触发任何事件
- java - 使用水平布局的 Vaadin 图标和标签不在一行中
- spring-cloud-dataflow - 执行 shell 命令
- bash - 如何以 root 身份在远程机器上运行来自 Jenkins 的命令?
- python - 如何使用 cv2.VideoCapture() 阅读上传到 Flask 应用程序的视频?