【问题标题】:How to add custom node module in expo/react-native apps?如何在 expo/react-native 应用程序中添加自定义节点模块?
【发布时间】: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);
    };

【问题讨论】:

    标签: react-native react-native-android expo


    【解决方案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 运行我的项目时收到此错误
      猜你喜欢
      • 2017-11-19
      • 2021-12-23
      • 1970-01-01
      • 2015-09-28
      • 2019-11-05
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多