React native: ошибка на Ios, но не на Android

#react-native #expo

#react-native #expo

Вопрос:

Мое приложение отлично работает на Android, но когда я запускаю его на Ios, я получаю эту ошибку :

ошибка диапазона: превышен максимальный размер стека вызовов react-native

введите описание изображения здесь

Я понимаю, что где-то в коде должен быть бесконечный цикл? Но почему не на Android? в пакете metro у меня есть :

> Не удается запустить ваше приложение. Пожалуйста, обратитесь к https://expo.fyi/no-registered-application для получения дополнительной информации.

app.json в последнее время не менялся…

Я действительно не знаю, где искать, там много файлов. Опять же, на Android все в порядке… Я потерялся, может быть, кто-нибудь может подсказать мне, где искать ошибку такого рода. Я не знаю, какие файлы вызывают ошибку… Вот мой App.js но я не знаю, здесь ли проблема :

 export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isFirstConnection: true,
      status: 0,
      fontLoaded: false
    };
  }

  async UNSAFE_componentWillMount() {
    let lang = await retrieveAppLang();
    let isConnected = await userSessionActive();

    if (lang.length == 2) {
      i18n.changeLanguage(lang);
    }

    if (isConnected === true amp;amp; this.props amp;amp; this.props.navigation) {
      this.props.navigation.navigate("TabBar");
    }
  }

  async componentDidMount() {
    await Font.loadAsync({
      FunctionLH: require("./assets/fonts/FunctionLH-Light.ttf"),
    });

    const data = await this.performTimeConsumingTask();
    if (data !== null) {
      this.setState({
        isFirstConnection: false,
        status: 1,
        fontLoaded: true,
      });
    }
  }

  performTimeConsumingTask = async () => {
    return new Promise((resolve) =>
      setTimeout(() => {
        resolve("result");
      }, 1500)
    );
  };

  render() {
    if (this.state.status == 1) {
      if (this.state.isFirstConnection amp;amp; this.state.fontLoaded) {
        return <SplashScreen />;
      } else {
        return <Navigation screenProps= {'Authentication'} />;
      }
    }

    return (
      <ImageBackground
        source={require("./assets/images/background.jpg")}
        style={{ flex: 1 }}
      >
        <View style={[styles2.container, styles2.containerCentered]}>
          <StatusBar hidden={true} />
          <View style={styles2.subContainer}>
            <Image
              style={styles2.logo}
              source={require("./assets/images/logo.png")}
            />
            <ActivityIndicator size="large" color="#43300E" />
            <Text>{i18n.t("app.loading")   "..."}</Text>
          </View>
        </View>
      </ImageBackground>
    );
  }
}
  

Большое спасибо.

Комментарии:

1. Было бы лучше, если бы вы опубликовали код.

2. Я знаю, но у меня много файлов, и я просто не знаю, какой из них вызывает ошибку.. Я отредактировал с App.js но я не уверен, что проблема здесь

3. привет, в этой ситуации то, что я делаю, это удаляю все внешние элементы и компоненты из app.js затем добавьте их 1 к 1, чтобы найти точную причину ошибки, также вы можете поделиться репозиторием git, если это возможно, чтобы я мог попробовать это

4. большое спасибо, я собираюсь попробовать это

5. Проблема, похоже, была связана со слишком большим файлом базы данных. Разделение его на 2 решило проблему. Я все еще нахожу очень странным, что ошибка была только в Ios, но… Большое спасибо за помощь мне!