Obteniendo este error: error: agrupación fallida: Error: no se puede resolver el módulo `react-native-safe-area-context`

42

Recibo este error después de ejecutar mi aplicación:

error: error de agrupación: Error: no se puede resolver el módulo react-native-safe-area-contextdesde node_modules/react-navigation-stack/lib/module/vendor/views/Stack/StackView.js: no se pudo encontrar el contexto react-native-safe-area-context dentro del proyecto.

Pero lo mismo que hice para mi antigua demostración. Funcionó perfectamente bien.

No sé qué estoy haciendo mal aquí. Por favor revise mi código:

Para instalar:

  1. React Native Navigation & Gesture Handler:

npm install --save react-navigation

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

  1. Reaccionar pila nativa:

npm install --save react-navigation-stack

App.js

import { createAppContainer } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import FirstOptionsPage from "./FirstOptionsPage";

const MainNavigator = createStackNavigator(
  {
    FirstOptions: FirstOptionsPage
  },
  {
    defaultNavigationOptions: {
      headerStyle: {
        // backgroundColor: '#28F1A6',
        elevation: 0,
        shadowOpacity: 0
      },
      headerTintColor: "#ca375e",
      headerTitleStyle: {
        fontWeight: "bold",
        color: "#161616"
      }
    }
  }
);

const App = createAppContainer(MainNavigator); // For setting Navigation Stack
export default App;

Y FirstOptionsPage.js:

import React from "react";
import {
  SafeAreaView,
  StyleSheet,
  View,
  Text,
  ScrollView,
  Switch
} from "react-native";

export default class FirstOptionsPage extends React.Component {
  static navigationOptions = {
    title: "Preferences"
  };

  constructor(props) {
    super(props);
    this.state = {
      switch1Value: false
    };
  }

  toggleSwitch1 = value => {
    this.setState({ switch1Value: value });
    console.log("Switch 1 is: " + value);
  };

  render() {
    const { navigate } = this.props.navigation;
    return (
      <SafeAreaView style={styles.mainContainerStyle}>
        <View style={styles.subContainerStyle}>
          <Text style={styles.subtitleTextStyle}>Someone likes my post</Text>
          <View style={styles.switchStyle}>
            <Switch
              onValueChange={this.toggleSwitch1}
              value={this.state.switch1Value}
              thumbColor={MAGENTA_COLOR_CODE}
              trackColor={{
                false: GREY_COLOR_CODE,
                true: DARK_GREY_COLOR_CODE
              }}
            />
          </View>
        </View>
      </SafeAreaView>
    );
  }
}

Soy nuevo en React-Native. Por favor, ayúdame a arreglar esto.

Gautam Shrivastav
fuente
1
verificar react-native-safe-area-contexten sus módulos de nodo, react-navigation-stackrequiere eso, pero sus módulos de nodo no tienen eso
Jigar Shah

Respuestas:

32

Creo que el problema está en SafeAreaView, para la nueva versión nativa de reacción, a la que ha migrado react-native-community/react-native-safe-area-view. si quieres usarlo SafeAreaView, primero debes instalarlo.

El nuevo uso es así:

import SafeAreaView from 'react-native-safe-area-view';

export default function MyAwesomeApp() {
  return (
    <SafeAreaView style={{ flex: 1 }}>
      <View style={{ flex: 1 }}>
        <Text>
          Look, I'm safe! Not under a status bar or notch or home indicator or
          anything! Very cool
        </Text>
      </View>
    </SafeAreaView>
  );
}

para la instalación que se pueden utilizar los siguientes comandos:
yarn add react-native-safe-area-view react-native-safe-area-context.

Si no utiliza el enlace automático, también debe vincularlo. para detalles al respecto, vea este enlace

Lenoarod
fuente
Ahora recibo este errorerror: bundling failed: Error: Unable to resolve module `@react-native-community/masked-view` from `node_modules/react-navigation-stack/lib/module/vendor/views/MaskedView.js`: @react-native-community/masked-view could not be found within the project.
Gautam Shrivastav
Y en realidad todo estaba funcionando bien en mi proyecto anterior. Ahora está mostrando este problema.
Gautam Shrivastav
debe saber que desde react-native 0.6, muchas bibliotecas habían eliminado el núcleo react-native. este problema como pre problema, lea este enlace [ github.com/react-native-community/react-native-masked-view]
Lenoarod
77
Bueno, después de hacer lo que dijiste en tu respuesta, también tuve que instalar @react-native-community/masked-view para solucionarlo. Entonces mi código funcionó con éxito. Gracias por la ayuda.
Gautam Shrivastav
1
Sí, esto está escrito en las notas de la versión github.com/react-navigation/stack/releases/tag/v2.0.1
mexique1
20

Es un poco divertido, quería agregar navegación, así que agregué

npm install --save react-navigation

para que esto funcione bien tuve que agregar:

expo install react-native-gesto-handler react-native-reanimated

Entonces tengo

No se puede resolver "react-native-safe-area-context" Entonces agregué:

expo install react-navigation-stack

expo install react-native-safe-area-view react-native-safe-area-context

entonces tengo

paquete fallido: Error: no se puede resolver el módulo @react-native-community/masked-view

Así que busqué la vista enmascarada (que actualmente no es compatible con la exposición, de acuerdo con su documento git). Luego descubrí que uso gato:

expo install @ react-native-community / masked-view que podría funcionar o no :)

Por lo tanto, a partir de ahora uso los siguientes comandos al comienzo de todos mis proyectos de reacción nativa, para poder usar la navegación correctamente:

npm install --save react-navigation

expo install react-native-gesto-handler react-native-reanimated react-navigation-stack

expo install react-native-safe-area-view react-native-safe-area-context

expo install @ react-native-community / masked-view

Arash Rabiee
fuente
Módulo no encontrado: no se puede resolver 'reaccionar-pantallas nativas' LOL
Dr.G
maldita sea, es verdad jajaja
Kai
15

Después de ejecutar estos comandos:

npm i react-native-safe-area-view react-native-safe-area-context &&
react-native link react-native-safe-area-context

Me provocó un error sobre la vista enmascarada, así que también tuve que ejecutar npm i @react-native-community/masked-viewy luego mi código ahora se puede ejecutar con éxito en el dispositivo físico Android.

Gracias a Lenoarod y Gautam Shrivastav por señalar la dirección correcta.

Antonio Jack
fuente
Para la versión nativa de reacción 0.60y superior, use hilo en lugar de npm y no enlace .
Fatih Mert Doğancan
4

Creo que echas de menos la dependencia del enlace con tu proyecto, así que puedes probar lo siguiente:

Con React Native 0.6 o superior:

En iOS, asegúrese de tener Cocoapods instalado y ejecutado:

cd ios
pod install
cd ..

Con React native 0.59 y menor prueba:

react-native link react-native-safe-area-context
Kim Thành Vũ
fuente
Ya he hecho esto pero no tuve suerte.
Gautam Shrivastav
2

copiar todo y pegar en la terminal

expo install react-navigation react-native-gesture-handler react-native-reanimated react-native-screens

trabaja para mi

Mahdi Hakami
fuente
1

Ejecute lo siguiente:

expo install react-native-safe-area-context

expo seleccionará la versión correcta y luego la instalará.

Joey Smith
fuente
1

use el comando npm i react-navigation-stack para resolver este error

Umer Javed
fuente
1

Iniciar el Metro Bundler directamente desde el directorio del proyecto funciona para mí. ¿Alguien puede decirme si también les funciona?

# Limpiar caché rm -rf $ TMPDIR / react- ; rm -rf $ TMPDIR / haste- ; rm -rf $ TMPDIR / metro- ; vigilante watch-del-all

* # Iniciar Metro Bundler directamente reaccionar-inicio nativo

* # Ahora se ejecuta react-native run-androido react-native run-iosen otra pestaña

Milan.Patel
fuente