Нативный компонент для RNCardView не существует

Я знаю, что с этой ошибкой уже есть много подобных сообщений, но ни одна из них не решает мою проблему..

Я пытался настроить response-native-cardview для моего проекта, но продолжаю получать следующую ошибку:

Invariant Violation: Native component for "RNCardView" does not exist

This error is located at:
    in RCTText (at Text.js:548)
    in Text (at Button.js:137)
    in RCTView (at View.js:71)
    in View (at Button.js:136)
    in TouchableNativeFeedback (at Button.js:128)
    in Button (at FormLogin.js:45)
    in RNCardView (at FormLogin.js:21)
    in RCTView (at View.js:71)
    in View (at FormLogin.js:20)
    in FormLogin (at SceneView.js:17)
    in SceneView (at CardStack.js:374)
    in RCTView (at View.js:71)
    in View (at CardStack.js:373)
    in RCTView (at View.js:71)
    in View (at CardStack.js:372)
    in RCTView (at View.js:71)
    in View (at createAnimatedComponent.js:147)
    in AnimatedComponent (at Card.js:12)
    in Card (at PointerEventsContainer.js:39)
    in Container (at CardStack.js:414)
    in RCTView (at View.js:71)
    in View (at CardStack.js:348)
    in RCTView (at View.js:71)
    in View (at CardStack.js:347)
    in CardStack (at CardStackTransitioner.js:66)
    in RCTView (at View.js:71)
    in View (at Transitioner.js:142)
    in Transitioner (at CardStackTransitioner.js:19)
    in CardStackTransitioner (at StackNavigator.js:38)
    in Unknown (at createNavigator.js:13)
    in Navigator (at createNavigationContainer.js:214)
    in NavigationContainer (at registerRootComponent.js:35)
    in RootErrorBoundary (at registerRootComponent.js:34)
    in ExpoRootComponent (at renderApplication.js:35)
    in RCTView (at View.js:71)
    in View (at AppContainer.js:102)
    in RCTView (at View.js:71)
    in View (at AppContainer.js:122)
    in AppContainer (at renderApplication.js:34)

Вот мой app.json

{
  "expo": {
    "sdkVersion": "25.0.0",
    "android": {
      "package": "hiking"
    },
    "name": "Hiking",
    "slug": "hiking",
    "version": "0.1.0",
    "isDetached": true,
    "detach": {
      "scheme": "exp56fa0b6664574a6ea12b193494508d48",
      "androidExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/android-v2.3.0-sdk25.0.0-0c32461b-a7c6-4ddc-b85b-32a80c4f18d9.tar.gz"
    }
  }
}

и package.json

{
  "name": "Hiking",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "jest-expo": "25.0.0",
    "react-test-renderer": "16.2.0"
  },
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "test": "node node_modules/jest/bin/jest.js"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "expo": "^25.0.0",
    "react": "16.2.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz",
    "react-native-cardview": "^1.1.5",
    "react-native-maps": "^0.20.1",
    "react-navigation": "^1.0.3",
    "rn-textinputlayout": "^1.0.5"
  }
}

реакция-нативная ссылка реакция-нативная-cardview не решила проблему. Установка вручную (как в файле readme) не решила проблему. Восстановление и перезапуск сервера не решили проблему.

Мне удалось успешно установить другие библиотеки (например, карты или textinputlayout).

2 ответа

Решение

Для тех, кто столкнулся с той же проблемой, мне удалось исправить ее, полностью изменив способ обработки проекта.

То, что у меня было, было сделано с проектом create-react-native-app, который я выбросил, чтобы запустить его с Экспо XDE.

Я создал еще один проект с react-native initскопировал мои файлы.js и npm installВсе прошло без нареканий.

Похоже, что Expo XDE не справился react-native link инструкции правильно, и был немного потерян.

В любом случае, пойти на react-native init вместо того, чтобы выбросить проект.

Просто добавьте @Noitidart Answer, ваш getPackages() внутри "MainApplication.java" будет выглядеть так

protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RNCardViewPackage()
    );
}

Звучит как проблема с веб-версией. Вам необходимо удалить текущую версию webview и установить версию 5.8.1.

Выполните следующие шаги:

  1. React-native удалить React-native-webview

  2. react-native установить react-native-webview@5.8.1

Дополнительная информация на https://github.com/react-native-community/react-native-webview/issues/580

Я успешно использую этот модуль. Есть некоторые проблемы с автоматической связью (при запуске react-native link, Вот что я должен был сделать, чтобы исправить это для Android:

  1. android/app/src/main/java/com/YOUR_APP_ID_HERE/MainApplication.java, Удалить import com.reactlibrary.RNCardViewPackage; и заменить его на import com.kishanjvaghela.cardview.RNCardViewPackage;

  2. Первое исправление должно быть все, что вам нужно, но в том же файле убедитесь, что у вас есть в protected List<ReactPackage> getPackages() { Вход new RNCardViewPackage()

  3. В android/settings.gradle убедитесь, что у вас есть эти строки:

    включить проект ':response-native-cardview' (':act-native-cardview').projectDir = новый файл (rootProject.projectDir, '../node_modules/react-native-cardview/android')

Наконец, я не думаю, что это проблема с этим модулем, но проверьте, чтобы быть уверенным. Если вы используете RN 0.47 plus, перейдите в каталог node_modules и удалите createJSModules если его там - https://github.com/jsierles/react-native-audio/pull/216/files

Другие вопросы по тегам