49 votes

undefined n'est pas un objet (évaluation de 'RNGestureHandlerModule.State').

J'ai installé react-navigation dans mon Projet React Native . C'est un projet de démarrage qui n'a pas de codes. Mais en exécutant le projet, je suis confronté à une erreur comme celle-ci.

Voici mon code de navigation

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;

Et voici les codes App.js

 import Navigator from './Router';

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

Si je supprime le composant navigateur de App.js et que je le remplace par un composant de type Texte l'application fonctionne sans aucune erreur.

0 votes

Tout cela semble correct, pouvez-vous montrer le code pour la fonction Home composant ?

0 votes

Vous devez le relier à react-native link Je suppose.

0 votes

Je rencontrais le même problème dans iOS. Dans ce cas, vous pouvez essayer d'ajouter la bibliothèque RNGesture manuellement. tuntunir.blogspot.com/2019/02/

96voto

Amiri Houssem Points 1083
  1. supprimer node_modules et package-lock.json
  2. npm install
  3. npm install --save react-navigation
  4. npm install --save react-native-gesture-handler
  5. react-native link

0 votes

Si l'erreur persiste même après toutes les étapes, c'est à cause des barres obliques inversées, alors changez cette ligne de code en ceci : project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/Android')

1 votes

En suivant ces étapes ainsi qu'en désinstallant l'application puis en la reconstruisant, cela a fonctionné pour moi.

6voto

hicham naimi Points 61

Si vous utilisez react-link pour lier vos dépendances :

  1. Ouvrez votre Podfile ios et supprimez toutes les dépendances liées : pod 'xxxxxxx', :path => '../node_modules/xxxxx
  2. Fermer Xcode
  3. Dans votre dossier /ios, lancez "pod update".
  4. Dans le code source de votre projet, exécutez "react-native link".
  5. Ouvrir Xcode et nettoyer le dossier de construction à partir du menu Xcode -> Produit
  6. Exécutez votre application depuis Xcode
  7. Liez manuellement la dépendance "react-native-gesture-handler" dans votre projet Xcode en suivant les étapes de la documentation : https://facebook.github.io/react-native/docs/linking-libraries-ios
  8. Maintenant, exécutez votre application à partir de Xcode, et tout devrait bien se passer.

5voto

BaiJiFeiLong Points 498

Du document officiel :

Si vous êtes sur React Native >= 0.60, vous devez d'abord désactiver le lien automatique pour react-native-gesture-handler. Pour désactiver le lien automatique, créez un fichier react-native.config.js dans la racine de votre projet avec le contenu suivant :

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

Si vous utilisez React 0.60, ne tenez pas compte de ce document officiel. Suivez les étapes suivantes :

  1. rm react-native.config.js s'il existe
  2. react-native link react-native-gesture-handler
  3. cd ios && pod install && cd ..
  4. react-native run-ios

1 votes

Est-ce également le cas pour le projet expo ? Parce que ce n'est écrit nulle part.

4voto

Cuong Tran Duc Points 1287

J'obtiens la même erreur sur ios à partir de RN v0.60

Ce qui suit a fonctionné pour moi :

cd ios
pod install

0 votes

Excellent. La solution la plus simple (et probablement la plus correcte). Cette réponse devrait être déplacée vers le haut !

3voto

Ali Hesari Points 666

D'abord, retirez node_modules y package-lock.json et exécuter npm install . Après avoir installé le react-navigation dans votre projet React Native. Vous devez installer react-native-gesture-handler. Si vous utilisez Expo, vous n'avez rien à faire ici, il est inclus dans le SDK. Sinon :

npm install react-native-gesture-handler

Et enfin, lier la dépendance du geste comme :

react-native link react-native-gesture-handler

Cette réponse est basée sur le Document de navigation React .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X