Pesquisa de site

reactjs - TypeError: Não é possível ler a propriedade 'useMemo' de null, motor js: hermes


Sou novo em React Native e estou tentando integrar o login do Google do Firebase no meu aplicativo. Estou usando TypeScript. Recebi inesperadamente esses erros após tentar executar meu código no meu emulador XCode no modo de compilação
E estou recebendo esses erros. Também não usei nenhum hook useMemo

ERRO Aviso: Chamada de hook inválida. Hooks só podem ser chamados dentro do corpo de um componente de função. Isso pode acontecer por uma das seguintes razões:

1. Você pode ter versões incompatíveis do React e do renderizador (como o React DOM)

2. Você pode estar violando as Regras dos Hooks

3. Você pode ter mais de uma cópia do React no mesmo aplicativo

Veja https://reactjs.org/link/invalid-hook-call para dicas sobre como depurar e corrigir este problema.

ERRO TypeError: Não é possível ler a propriedade 'useMemo' de nulo, engine js: hermes

ERRO Violação de Invariante: "main" não foi registrado. Isso pode acontecer se:

* Metro (o servidor de desenvolvimento local) está sendo executado a partir da pasta errada. Verifique se o Metro está em execução, pare-o e reinicie-o no projeto atual.

* Um módulo falhou ao carregar devido a um erro e `AppRegistry.registerComponent` não foi chamado., mecanismo js: hermes

Eu tentei diferentes soluções do Stack Overflow, mas nenhuma conseguiu resolver meu problema

Aqui está meu index.ts

import { AppRegistry} from "react-native";
import { registerRootComponent } from "expo";
import App from "./App"

AppRegistry.registerComponent("App", () => App);
registerRootComponent(App);

Aqui está meu App.tsx

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import LoginScreen from './src/components/LoginScreen';
import SignUpScreen from './src/components/SignUpScreen';
import ForgotPasswordScreen from './src/components/ForgotPassword';
import OtpScreen from './src/components/OtpScreen';

const Stack = createStackNavigator();

const App = () => {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="Login">
        <Stack.Screen name="Login" options={{headerShown: false}} component={LoginScreen} />
        <Stack.Screen name="SignUp" options={{headerShown: false}} component={SignUpScreen} />
        <Stack.Screen name="ForgotPassword" options={{headerShown: false}} component={ForgotPasswordScreen} />
        <Stack.Screen name="OTP" options={{headerShown: false}} component={OtpScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default App;

Aqui está minha tela de login onde estou tentando implementar meu login com o Google

import React, { useState, useEffect } from 'react';
import { View, Text, TextInput, StyleSheet, Button, TouchableOpacity } from 'react-native';
import { promptAsync, request, response } from '../firebase/firebase.sign-in.util';
import { LinearGradient } from 'expo-linear-gradient';
import { GoogleAuthProvider, signInWithCredential } from 'firebase/auth';
import {auth} from '../firebase/firebase.util';
const LoginScreen = ({ navigation }: { navigation: any }) => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');

    const handleLogin = () => {
        console.log('Login button pressed');
    };
    
    useEffect(()=>{
        if(response?.type == "success"){
            const {id_token} = response.params;
            const credential = GoogleAuthProvider.credential(id_token);
            signInWithCredential(auth, credential)
        }
    },[response])

    return (
        <LinearGradient
            colors={['#CACACA', '#053C4E']}
            start={{ x: 0, y: 0 }}
            end={{ x: 1, y: 1 }}
            style={styles.container}
        >
            <Text style={styles.title}>Login</Text>
            <TextInput
                style={styles.input}
                placeholder="Email"
                placeholderTextColor="#f6f6f6"
                value={email}
                onChangeText={setEmail}
            />
            <TextInput
                style={styles.input2}
                placeholder="Password"
                placeholderTextColor="#f6f6f6"
                secureTextEntry={true}
                value={password}
                onChangeText={setPassword}
            />
            <TouchableOpacity onPress={() => navigation.navigate('ForgotPassword')}>
                <Text style={styles.forgotPassword} >Forgot Password ?</Text>
            </TouchableOpacity>
            <TouchableOpacity style={styles.loginButton} onPress={() => promptAsync()}>
                <Text style={styles.loginButtonText}>Login</Text>
            </TouchableOpacity>

Eu passei pela maioria das soluções do Stack Overflow e nenhuma funcionou para mim