1
votes

Problème de React native React-Navigation SafeArea

J'ai mis à jour mon projet Android, react-navigation was 3.x , passer à 5.x , j'ai décidé de mettre en œuvre les changements nécessaires mais cela ne veut pas fonctionner, exemple copié de la page de react-navigation mais montre toujours la même erreur, tout le monde sait où est le problème ici? Alors que j'ai cherché sur Google la moitié d'Internet et que je ne trouve pas de solution

Mon package.json:

Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" was not found in the UIManager.

This error is located at:
    in RNCSafeAreaProvider (at SafeAreaContext.tsx:74)
    in SafeAreaProvider (at SafeAreaProviderCompat.tsx:42)
    in SafeAreaProviderCompat (at StackView.tsx:432)
    in GestureHandlerRootView (at GestureHandlerRootView.android.js:31)
    in GestureHandlerRootView (at StackView.tsx:431)
    in StackView (at createStackNavigator.tsx:82)
    in StackNavigator (at App.js:27)
    in EnsureSingleNavigator (at BaseNavigationContainer.tsx:376)
    in ForwardRef(BaseNavigationContainer) (at NavigationContainer.tsx:91)
    in ThemeProvider (at NavigationContainer.tsx:90)
    in ForwardRef(NavigationContainer) (at App.js:26)
    in App (at renderApplication.js:45)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:106)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:132)
    in AppContainer (at renderApplication.js:39)
[Sat Jul 11 2020 15:11:50.561]  ERROR    Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" was not found in the UIManager.

This error is located at:
    in RNCSafeAreaProvider (at SafeAreaContext.tsx:74)
    in SafeAreaProvider (at SafeAreaProviderCompat.tsx:42)
    in SafeAreaProviderCompat (at StackView.tsx:432)
    in GestureHandlerRootView (at GestureHandlerRootView.android.js:31)
    in GestureHandlerRootView (at StackView.tsx:431)
    in StackView (at createStackNavigator.tsx:82)
    in StackNavigator (at App.js:27)
    in EnsureSingleNavigator (at BaseNavigationContainer.tsx:376)
    in ForwardRef(BaseNavigationContainer) (at NavigationContainer.tsx:91)
    in ThemeProvider (at NavigationContainer.tsx:90)
    in ForwardRef(NavigationContainer) (at App.js:26)
    in App (at renderApplication.js:45)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:106)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:132)
    in AppContainer (at renderApplication.js:39)

Mon code copié:

import 'react-native-gesture-handler';
import * as React from 'react';
import { StyleSheet, View, Text, TouchableHighlight } from "react-native";
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
    </View>
  );
}

const Stack = createStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

Et l'erreur:

{
  "name": "BusinessCard",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/native": "^5.7.0",
    "@react-navigation/stack": "^5.7.0",
    "react": "^16.13.1",
    "react-native": "^0.63.0",
    "react-native-gesture-handler": "^1.6.1",
    "react-native-reanimated": "^1.9.0",
    "react-native-safe-area-context": "^3.1.1",
    "react-native-safe-area-view": "^1.1.1",
    "react-native-screens": "^2.9.0"
  },
  "devDependencies": {
    "@babel/core": "^7.10.4",
    "@babel/runtime": "^7.10.4",
    "babel-jest": "^24.9.0",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.53.1",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  }
}


0 commentaires

3 Réponses :


0
votes

Essayez-vous: cd ios && pod install && cd .. Puis fermez l'application, fermez tous les terminaux et reconstruisez votre application. J'espère vous aider.


0 commentaires

1
votes

Dans la nouvelle version de React Navigation, nous devons installer manuellement la react-native-safe-area react-native-screens et même react-native-screens . J'ai résolu un problème similaire en effectuant sudo npm install react-native-safe-area , sudo npm install react-native-screens . Ensuite, effacez les données de l'application de mon Android et réinstallez l'application. Ouvrez un nouveau terminal (Ubuntu 20.04 LTS) puis exécutez npm start . Essayez celui-ci, cela pourrait être utile.


3 commentaires

Cela a fonctionné et je pense que ce n'est pas la première fois que cela m'arrive ...


N'utilisez pas sudo pour installer les dépendances


Je pense que je n'ai pas configuré mon terminal correctement, sans la commande Super user (sudo), je ne peux pas installer non seulement les dépendances mais tous les autres fichiers simples.



0
votes

J'ai une solution pour Android uniquement. C'est-à-dire qu'il vous suffit de suivre les étapes ci-dessous dans votre terminal.

[your project path]\> cd android et Entrée.

Ensuite, si vous êtes dans PowerShell, tapez simplement la commande ci-dessous.

[your project path]\android\> ./gradlew clean

si vous êtes dans cmd, tapez la commande ci-dessous.

[your project path]\android\> gradlew clean

et redémarrez votre projet natif react.


0 commentaires