undefined не является объектом (оценка "RNGestureHandlerModule.State"

Я установил интерактивную навигацию в проекте React Native. У его стартового проекта нет кодов. Но во время выполнения проекта я столкнулся с такой ошибкой.

Вот мой код навигации

import { createStackNavigator } from 'react-navigation';

import Home from './screens/Home';
import WeatherDetail from './screens/WeatherDetail';


const Navigation = createStackNavigator({
  Home: { screen: Home },
  WeatherDetail: {
  screen: WeatherDetail
 } 
});

export default Navigation;

И вот коды App.js

 import Navigator from './Router';


 export default class App extends Component {
   render() {
     return (
       <View style={styles.container}>
         <Navigator />
       </View>
     );
    }
  }

Если я удалю компонент навигатора из App.js и заменим его текстом, приложение запускается без каких-либо ошибок.

Ответы

Ответ 1

  1. удалить node_modules и package-lock.json
  2. npm install
  3. npm install --save react-navigation
  4. npm install --save react-native-gesture-handler
  5. react-native link

Ответ 2

Сначала удалите node_modules и package-lock.json и запустите npm install. После установки пакета react-navigation в вашем проекте React Native. Вы должны установить response-native-жест-обработчик. Если вы используете Expo, вам не нужно ничего делать здесь, она включена в SDK. Иначе:

npm install react-native-gesture-handler

И, наконец, зависимость жеста ссылки как:

react-native link react-native-gesture-handler

Этот ответ основан на документе React Navigation.

Ответ 3

Если вы используете ссылку-ссылку для связи ваших зависимостей:

  1. 0 Откройте ваш ios Podfile и удалите все связанные с вами зависимости: pod 'xxxxxxx',: path => '../node_modules/xxxxx
  2. Закрыть Xcode
  3. В вашей папке /ios запустите "pod update"
  4. В исходном коде вашего проекта запустите "ответную ссылку"
  5. Откройте Xcode и очистите папку сборки из меню Xcode → Product
  6. Запустите ваше приложение из Xcode
  7. Свяжите вручную зависимость "response-native-жест-обработчик" в ваш проект Xcode, выполнив следующие шаги в документации: https://facebook.github.io/react-native/docs/linking-libraries-ios
  8. Теперь запустите ваше приложение из Xcode, все будет в порядке.

Ответ 4

Из официального документа:

Если вы используете React Native> = 0.60, вам нужно сначала отключить автоподсоединение для реакции-нативного жеста-обработчика. Чтобы отключить автоматическое связывание для него, создайте файл response-native.config.js в корневом каталоге вашего проекта со следующим содержимым:

module.exports = {
  dependencies: {
    'react-native-gesture-handler': {
      platforms: {
        android: null,
        ios: null,
      },
    },
  },
};

Если вы используете React 0.60, просто опустите этот официальный документ. Выполните следующие шаги:

  1. rm react-native.config.js если существует
  2. react-native link react-native-gesture-handler
  3. cd ios && pod install && cd..
  4. react-native run-ios

Ответ 5

может быть, кто-то пришел сюда из-за той же проблемы, что и я.

я получил эту ошибку, потому что я использую реагирующую навигацию версии 3.x, в этой версии stackNavigator изменен на createStackNavigator и должен использовать createAppContainer(createStackNavigator)

Я исправляю это, как сказал г-н. амири, но я не удаляю мой node_module, просто следуйте шагам 3 - 5

Ответ 6

Поскольку мне запрещено комментировать, я публикую это здесь. Это ответ @Amiri Houssem, но я добавляю еще одну вещь:

  1. remove node_modules and package-lock.json
  2. npm install
  3. npm install --save react-navigation
  4. npm install --save react-native-gesture-handler
  5. react-native link

Если есть ошибка даже после этих 5 шагов, проверьте android/settings.gradle и измените эту строку следующим образом:

project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')

Ответ 7

Я получаю ту же ошибку на IOS от RN v0.60

У меня сработало следующее:

cd ios
pod install

Ответ 8

Я отвечаю, потому что ни один из вышеперечисленных ответов не относился ко мне.

Я получил эту ошибку, потому что VSCode автоматически вставил import { TouchableOpacity } from 'react-native-gesture-handler' из'act import { TouchableOpacity } from 'react-native-gesture-handler' в качестве зависимости в моем файле, когда я добавил элемент <TouchableOpacity>.

Дайте последним файлам, которые вы отредактировали, один раз, на случай, если там есть оператор импорта, которого вы не ожидаете!

Ответ 9

Я использовал это в CLI, чтобы решить проблему

cd iOS
pod install

cd ..
react-native unlink react-native-gesture-handler

Ответ 10

может быть его опозданием. Временное решение понижает версию реактивной навигации:
1- отсоединить и удалить интерактивную навигацию и обработчик
2- добавить "реагировать на навигацию": "^ 2.18.2" на package.json
3- удалить папку node_modules
4- npm я
5- реакция-родная ссылка

Ответ 11

Несмотря на то, что react-native-gesture-handler присутствует в папке node_modules, нам нужно добавить его в путь или установить заново. Затем ссылка с родным кодом.

1) npm install --save react-native-gesture-handler

success Saved 1 new dependency.
info Direct dependencies
└─ [email protected]
info All dependencies
└─ [email protected]

2) react-native link

rnpm-install info Linking react-native-gesture-handler ios dependency 
rnpm-install info Platform 'ios' module react-native-gesture-handler has been
 successfully linked 
rnpm-install info Linking react-native-gesture-handler android dependency 
rnpm-install info Platform 'android' module react-native-gesture-handler has
 been successfully linked

3) react-native run-android или react-native run-ios

Ответ 12

Если вы используете конфигурацию с Podfile в IOS. Выполните следующие действия:

  • Прокомментируйте эту строку pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler' в <react-native-project>/ios/Podfile pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler' <react-native-project>/ios/Podfile.
  • Откройте <react-native-project>.xcworkspace Добавьте RNGestureHandler.xcodeproj в библиотеки (щелкните правой кнопкой мыши по папке библиотеки и выберите "Добавить файлы в") из node_modules/react-native-gesture-handler/ios.
  • Добавьте libRNGestureHandler.a в (Фазы сборки) → (Связать libRNGestureHandler.a с библиотеками).

Ответ 13

Это хорошо сработало и для меня.
1) npm install react-navigation
2) npm install react-native-gesture-handler
3) npm intstall
4) react-native link

удалить приложение

5) react-native run-android

Ответ 14

Выполните следующие команды в командной строке (Запуск от имени администратора)

 npm install react-navigation
 npm install react-native-gesture-handler
 npm intstall
 react-native link

Повторная установка приложения решит проблему.

Ответ 15

Я боролся с этим, и ни один из вышеупомянутых ответов не работал для меня. Вот что я должен был сделать:

  • Удалите папку ios полностью.
  • Удалите свою папку node_modules и package-lock.json.
  • Перезагрузите компьютер.
  • Запустите react-native eject чтобы заново создать папки с собственным кодом.
  • Запустите npm install
  • Запустить react-native link
  • Запустите npm run start -- --reset--cache
  • Теперь запустите react-native run-ios

Ответ 16

см. вашу собственную версию реакции, если версия 0.60, то вы должны выполнить миграцию на androidX с помощью программы-переводчика, следуйте инструкциям по этой ссылке https://github.com/mikehardy/jetifier

удачно для меня :)

Ответ 17

если вы сделали выше, он еще не запущен, попробуйте это, если вы используете Windows

cd android 

.\gradlew cleanBuildCache

и попробуйте запустить его

react-native run-android