wake-up-neo.com

undefined ist kein Objekt (wertet 'RNGestureHandlerModule.State' aus)

Ich habe react-navigation in meinem React Native-Projekt installiert. Es ist ein Startprojekt, das keine Codes enthält. Aber während ich ein Projekt laufe, stoße ich auf solche Fehler. 

Hier ist mein Navigationscode

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;

Und hier sind die App.js-Codes

 import Navigator from './Router';


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

Wenn ich die Navigatorkomponente aus der App.js entferne und sie durch ein Text ersetze, wird die Anwendung ohne Fehler ausgeführt. 

19
Ish Man
  1. entfernen Sie node_modules und package-lock.json 
  2. npm install
  3. npm install --save react-navigation
  4. npm install --save react-native-gesture-handler
  5. react-native link
61
Amiri Houssem

Wenn Sie mit reaktiver Verknüpfung Ihre Abhängigkeiten verknüpfen:

  1. 0Öffnen Sie Ihre ios Pod-Datei und löschen Sie alle Ihre verknüpften Abhängigkeiten: pod 'xxxxxxx',: path => '../node_modules/xxxxx
  2. Schließen Sie Xcode
  3. Führen Sie in Ihrem/ios-Ordner "Pod Update" aus.
  4. Führen Sie in Ihrer Projektquelle "Reaktiver Link" aus.
  5. Öffnen Sie Xcode und Clean Build Folder über Xcode Menu -> Product
  6. Führen Sie Ihre Anwendung von Xcode aus
  7. Verknüpfen Sie manuell die Abhängigkeit "reaktiver Gestenhandler" in Ihr Xcode-Projekt. Gehen Sie dazu in der Dokumentation vor: https://facebook.github.io/react-native/docs/linking-libraries-ios
  8. Führen Sie jetzt Ihre Anwendung von Xcode aus aus.
4
hicham naimi

Aus dem offiziellen Dokument:

Wenn Sie React Native> = 0.60 verwenden, müssen Sie zuerst das Autolinking für den Gesten-Handler für React-Native deaktivieren. Um das Autolinking für diesen Gesten-Handler zu deaktivieren, erstellen Sie eine Datei react-native.config.js Datei im Stammverzeichnis Ihres Projekts mit folgendem Inhalt:

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

Wenn Sie React 0.60 verwenden, lassen Sie dieses offizielle Dokument einfach aus. Führen Sie die folgenden Schritte aus:

  1. rm react-native.config.js falls vorhanden
  2. react-native link react-native-gesture-handler
  3. cd ios && pod install && cd ..
  4. react-native run-ios
3
BaiJiFeiLong

Ich bekomme den gleichen Fehler auf ios von RN v0.60

Folgendes hat für mich funktioniert:

cd ios
pod install
2
Cuong Tran Duc

vielleicht kommt hier jemand her, das gleiche problem wie ich.

ich habe diese Fehlermeldung erhalten, weil ich reag-navigation Version 3.x verwende. In dieser Version ändert sich stackNavigator in createStackNavigator und sollte createAppContainer(createStackNavigator) verwenden.

ich verstehe es genau wie mr.amiri sagte aber ich lösche mein node_module nicht

2
jemjov

Entfernen Sie zunächst node_modules und package-lock.json und führen Sie npm install..__ aus. Nach der Installation des react-navigation-Pakets in Ihrem React Native-Projekt Sie sollten den reaktionsnativen Gestenhandler installieren. Wenn Sie Expo verwenden, müssen Sie hier nichts tun, es ist im SDK enthalten. Andernfalls: 

npm install react-native-gesture-handler

Und schließlich verknüpfen Sie die Gestenabhängigkeit als:

react-native link react-native-gesture-handler

Diese Antwort basiert auf dem Dokument React Navigation .

2
Ali Hesari

Ich antworte, weil keine der obigen Antworten für mich relevant war.

Ich habe diesen Fehler erhalten, weil VSCode beim Hinzufügen eines Elements import { TouchableOpacity } from 'react-native-gesture-handler' Automatisch <TouchableOpacity> Als Abhängigkeit in meine Datei eingefügt hat.

Geben Sie die zuletzt bearbeiteten Dateien erneut an, für den Fall, dass Sie keine Importanweisung erwarten!

1
James-Prescott

möglicherweise ist es seine späte . Temporäre Lösung zum Downgrade der Version von reag navigation:
1- Verknüpfung und Deinstallation von respons-navigation und des Handlers aufheben 
2- füge "reag-navigation": "^ 2.18.2" zu package.json hinzu
3- Ordner "node_modules" entfernen
... 16 npm i
5- reaktiver Link

0
Jamal

Das hat auch bei mir gut funktioniert.
1) npm install react-navigation
2) npm install react-native-gesture-handler
3) npm intstall
4) react-native link

deinstalliere die App

5) react-native run-Android

0
Apurva Aggarwal

Führen Sie die folgenden Befehle in der Eingabeaufforderung aus (Als Administrator ausführen)

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

Durch eine Neuinstallation der Anwendung wird das Problem behoben.

0
Codemaker

Ich kämpfte damit und keine der obigen Antworten funktionierte für mich. Folgendes musste ich tun:

  • Löschen Sie den Ordner ios vollständig.
  • Löschen Sie Ihr node_modules Ordner und package-lock.json.
  • Starte deinen Computer neu.
  • Lauf react-native eject, um Ihre nativen Code-Ordner neu zu erstellen.
  • Lauf npm install
  • Lauf react-native link
  • Lauf npm run start -- --reset--cache
  • Führen Sie nun react-native run-ios
0
Eric

Wenn Sie eine Konfiguration mit Podfile in ios verwenden. Befolgen Sie diese Schritte:

  • Kommentiere diese Zeile pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler' im <react-native-project>/ios/Podfile.
  • Öffne <react-native-project>.xcworkspace Hinzufügen RNGestureHandler.xcodeproj in Bibliotheken (Klicken Sie mit der rechten Maustaste auf den Bibliotheksordner und wählen Sie "Dateien hinzufügen zu") aus node_modules/react-native-gesture-handler/ios.
  • Hinzufügen libRNGestureHandler.a in (Build-Phasen) -> (Binary mit Bibliotheken verknüpfen).
0
aldajo92

Auch wenn react-native-gesture-handler im Ordner node_modules vorhanden ist, müssen Sie ihn dem Pfad hinzufügen oder erneut installieren. Dann mit nativem Code verknüpfen.

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 oder react-native run-ios

0
Harikrishnan

sehen Sie sich Ihre native Reaction-Version an. Wenn Sie Version 0.60 verwenden, müssen Sie mit einem Jetifier auf AndroidX migrieren. Befolgen Sie die Schritte unter diesem Link https://github.com/mikehardy/jetifier

erfolgreich für mich :)

0
Bagas

Da ich keine Kommentare abgeben darf, poste ich sie hier. Dies ist die Antwort von @Amiri Houssem, aber ich möchte noch etwas hinzufügen:

  1. entfernen Sie node_modules und package-lock.json
  2. npm installieren
  3. npm install --save reag-navigation
  4. npm install --save reaktiver Gestenhandler
  5. reaktiver Link

Wenn auch nach diesen 5 Schritten ein Fehler auftritt, überprüfen Sie Android/settings.gradle und ändern Sie diese Zeile folgendermaßen 

project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/Android')
0
Burim Syla

Ich habe dies in der CLI verwendet, um das Problem zu lösen

cd iOS
pod install

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