undefined не является объектом (оценивает '_reactNativeContacts.default.getAll') - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь использовать реагирующие на родство контакты с реактивным приложением, созданным в Expo, но у меня появляется следующее сообщение об ошибке:

undefined is not an object (evaluating '_reactNativeContacts.default.getAll')

Вот код, который я использую:

import React from 'react';
import {
  Image,
  Platform,
  ScrollView,
  StyleSheet,
  Text,
  TouchableOpacity,
  View,
  Modal,
  TouchableHighlight,
  ImageBackground,
  TextInput,
  Picker,
  PermissionsAndroid
} from 'react-native';
import { WebBrowser } from 'expo';
import Contacts from 'react-native-contacts';

import { MonoText } from '../components/StyledText'; 


  Contacts.getAll((err, contacts) => {
    if (err === 'denied'){
      // error
    } else {
      // contacts returned in Array
    }
  })

Я попытался выполнить все шаги для установки на этой странице для части Android: https://github.com/rt2zz/react-native-contacts#getting-started

Но я не могу найти, где я могу сделать эту часть: Я не знаю, где я могу найти этот файл: android / settings.gradle

Кстати, я попробовал эту команду «реактивная ссылка» в своем каталоге приложений, и ничего не изменилось.

Android
In android/settings.gradle
...
include ':react-native-contacts'
project(':react-native-contacts').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-contacts/android')
In android/app/build.gradle
...
dependencies {
    ...
    implementation project(':react-native-contacts')
}

У кого-нибудь была такая проблема? Спасибо за помощь!

1 Ответ

1 голос
/ 24 апреля 2019

Насколько я понимаю, вы разрабатываете свое приложение с Expo. Некоторые из независимых библиотек плохо работают с Expo. У меня есть два предложения для вас.

  1. Если вы хотите продолжать использовать реактивные контакты, вам нужно удалить приложение из Expo
  2. Или напрямую используйте API контактов Expo, подробности можно найти по этой ссылке Контакты Expo Я хотел бы сделать это, что является для вас меньшей работой и решит вашу проблему

    import { Contacts } from 'expo';
    
    const { data } = await Contacts.getContactsAsync({
        fields: [Contacts.Fields.Emails],
    });
    
    if (data.length > 0) {
        const contact = data[0];
        console.log(contact);
    }
    

Вы можете найти ту же проблему, созданную на странице gitub реагировать на родные контакты. Выпуск

...