如何在 expo/react-native 应用程序中添加自定义节点模块?
Posted
技术标签:
【中文标题】如何在 expo/react-native 应用程序中添加自定义节点模块?【英文标题】:How to add custom node module in expo/react-native apps? 【发布时间】:2019-10-24 19:22:07 【问题描述】:我正在尝试在 react-native 中为 android 设备创建一个自定义插件,它可以从应用程序界面本身调用用户,而不是使用原生 android 应用程序并通过在 expo 应用程序中链接它来实现 expo 应用程序中的插件。 但是当我在我的 JS 代码中导入模块并使用它时,模块将变为空。
这是我的 build.gradle 文件
buildscript
repositories
jcenter()
google()
dependencies
classpath 'com.android.tools.build:gradle:3.4.1'
apply plugin: 'com.android.library'
android
compileSdkVersion 28
buildToolsVersion "28.0.1"
defaultConfig
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
lintOptions
abortOnError false
repositories
mavenCentral()
dependencies
compile 'com.facebook.react:react-native:+'
这是我的 package.json 文件
"main": "node_modules/expo/AppEntry.js",
"scripts":
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
,
"dependencies":
"expo": "^33.0.0",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
"react-native-react-native-call-app": "file:../react-native-call-app",
"react-native-web": "^0.11.4"
,
"devDependencies":
"babel-preset-expo": "^5.1.1"
,
"private": true
//调用app模块的插件代码 https://github.com/NikhilOO7/react-native-call-app-module
// js代码
import RNReactNativeCallApp from "react-native-react-native-call-app";
onPress = id =>
console.log(id, RNReactNativeCallApp);
RNReactNativeCallApp.callPerson(id);
;
【问题讨论】:
【参考方案1】:如果你不想放弃 expo 并且仍然想要一种添加自定义原生模块的方法,这里有一个有趣的方法。
您必须退出 expo kit,但选择在那里使用 expo kit,在 app.json 文件中进行一些更改,并在 babel.config.js 中添加 module-resolver 插件。
仅通过这些更改,您就可以从同一个代码库中同时运行 expo 和弹出的 expo 应用程序。 在弹出版本中,您可以添加原生模块,在未弹出版本中,您可以简单地模拟原生功能。
这是您可以关注的完整博客,它还提供了一个入门工具包供您开始使用。 https://codersera.com/blog/running-expo-react-native-together/
【讨论】:
【参考方案2】:您只能在弹出后添加自定义本机模块。 https://docs.expo.io/versions/latest/expokit/eject/
【讨论】:
我已经退出了项目,但我仍然遇到同样的问题,它将我的插件读取为空。 Process 'command './node_modules/expokit/detach-scripts/run-exp.sh'' 以非零退出值 1 从 android studio @Bardiamist 运行我的项目时收到此错误以上是关于如何在 expo/react-native 应用程序中添加自定义节点模块?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 expo react-native 自定义字体应用于整个容器
如何使用搜索文本输入(expo、react-native)在屏幕上显示项目
对象不是 Expo(react-native) 应用程序中的函数
在 expo/react-native 中发送图像时随机出现“错误处理请求正文”