React-native-iap: Undefined is not a function (evaluating 'RNIap.prepare()')

Created on 20 Jul 2018  ·  4Comments  ·  Source: dooboolab/react-native-iap

When I run react-native run-android --variant=release, function .prepare() is undefined
But when I run react-native run-android, .prepare() is a function
my android/build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        classpath 'com.google.gms:google-services:4.0.1'
  }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
        google()

        configurations.all {
            resolutionStrategy {
                force 'com.facebook.android:facebook-android-sdk:4.21.0'
            }
        }
    }
}

ext {
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'
    minSdkVersion = 16
    targetSdkVersion = 25
}

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android") || subproject.plugins.hasPlugin('android-library')) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

android/app/build.gradle

...
dependencies {
    implementation(project(':react-native-firebase')) {
        transitive = false
    }

    // RNFirebase required dependencies
    implementation "com.google.firebase:firebase-core:16.0.1"
    implementation "com.google.android.gms:play-services-base:15.0.1"

    implementation "com.google.firebase:firebase-config:16.0.0"

    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:27.1.1"
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation project(':react-native-vector-icons')
//    compile project(':react-native-navigation')
    implementation (project(':react-native-device-info')) {
        exclude group: "com.google.android.gms"
    }
    implementation project(':react-native-facebook-login')
    implementation(project(":react-native-google-signin")){
        exclude group: "com.google.android.gms"
    }
    implementation project(':react-native-i18n')
    implementation 'com.google.android.gms:play-services-auth:15.0.1'
    implementation project(':react-native-svg')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-text-gradient')
    implementation project(':react-native-iap')
    implementation project(':react-native-fetch-blob')
}
...

Version of react-native-iap

1.2.4

Platforms you faced the error (IOS or Android or both?)

Android

Expected behavior

RNIap.prepare is a function

Actual behavior

RNIap.prepare is undefined

Tested environment (Emulator? Real Device?)

both

Steps to reproduce the behavior

Run react-native run-android --variant=release, function .prepare() is undefined

🙏 help wanted 🤖 android

All 4 comments

I've tried to import react-native-iap like this:
import RNIap from 'react-native-iap'
and
import * as RNIap from 'react-native-iap'

I've solved this problem, you may close this issue

@Gribadze Sorry for late comeback. Could you share your experience for those who might face same problem as you do? Thanks.

@Gribadze could you please share the solution to this problem?

Was this page helpful?
0 / 5 - 0 ratings