Navigation Container 在 Expo go 的生产环境中可以工作,但不能在 TestFlight App store connect 中工作

问题描述 投票:0回答:1

我已经构建了一个 React Native Expo 应用程序。这个应用程序在生产中运行得非常好。当我使用

npm start
在本地计算机上运行此应用程序并将其与手机上的 expo go 应用程序连接时,该应用程序运行良好。现在我想将这个应用程序上传到应用程序商店,因此我在 expo.dev 上创建了构建版本,并使用以下命令为此应用程序构建了构建版本。
eas build:configure
->
eas build --platform ios
->
eas submit -p ios --latest

我已经实现了 appleId、ascAppID 和 appleTeamId 的凭据。一旦我在 testflight 上上传构建,它就会成功上传构建。从 testflight 下载应用程序后,它只向我显示一个空白屏幕,而不是向我显示导航容器。

我的 app.js 代码如下:

import 'react-native-gesture-handler';

// // Navigator
import { createDrawerNavigator } from '@react-navigation/drawer';
import { createNativeStackNavigator } from "@react-navigation/native-stack"
import { NavigationContainer } from '@react-navigation/native';

// // React Components
import React, { useState, useEffect} from 'react';
import { View, Text } from 'react-native';
import { firebase } from './config';

// // Screens and Pages
import { Login, SignUp, Welcome} from "./screens";

// // Navigation Containers
const Stack = createNativeStackNavigator();

// App Layout 
export default function App() {
  const [initializing, setInitializing] = useState(true);
  const [user, setUser] = useState();

  function handleAuthStateChanged(user){
    setUser(user);
    if(initializing) setInitializing(false);
  }

  useEffect(() => {
    const subscriber = firebase.auth().onAuthStateChanged(handleAuthStateChanged);
    return subscriber;
  }, []);

  if(initializing) return null;
  
  if(!user){
    return (
      <NavigationContainer style={{flex: 1}}>
        <Stack.Navigator
          initialRouteName='Welcome'
        >
          <Stack.Screen
            name="Welcome"
            component={Welcome}
            options={{
              headerShown: false
            }}
          />
          <Stack.Screen
            name="Login"
            component={Login}
            options={{
              headerShown: false
            }}
          />
          <Stack.Screen
            name="SignUp"
            component={SignUp}
            options={{
              headerShown: false
            }}
          />
        </Stack.Navigator>
      </NavigationContainer>
    );
  }
  return({
     <View>
       <Text>Something went wrong</Text>
     </View>
  });
}

我还检查了是否导入了正确的依赖项并再次检查,但出现了同样的问题。这是我对 package.json 的依赖项

"dependencies": {
    "@expo/webpack-config": "^18.0.1",
    "@gorhom/bottom-sheet": "^4.4.7",
    "@react-native-community/blur": "^4.3.2",
    "@react-navigation/drawer": "^6.6.3",
    "@react-navigation/native": "^6.1.7",
    "@react-navigation/native-stack": "^6.9.13",
    "@stripe/stripe-react-native": "0.23.3",
    "@types/react": "~18.0.27",
    "base-64": "^1.0.0",
    "body-parser": "^1.20.2",
    "expo": "~48.0.18",
    "expo-checkbox": "^2.3.1",
    "expo-image-picker": "~14.1.1",
    "expo-status-bar": "~1.4.4",
    "expo-updates": "~0.16.4",
    "express": "^4.18.2",
    "firebase": "^9.23.0",
    "query-string": "^8.1.0",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-native": "0.71.8",
    "react-native-element-dropdown": "^2.9.0",
    "react-native-gesture-handler": "~2.9.0",
    "react-native-image-crop-picker": "^0.40.0",
    "react-native-image-picker": "^5.6.0",
    "react-native-image-zoom-viewer": "^3.0.1",
    "react-native-reanimated": "~2.14.4",
    "react-native-select-dropdown": "^3.3.4",
    "react-native-vector-icons": "^9.2.0",
    "react-native-web": "~0.18.10",
    "react-native-webview": "11.26.0",
    "stripe": "^12.12.0",
    "typescript": "^4.9.4"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0"
  },

我还尝试删除导航容器,只添加欢迎屏幕的正常视图,这对于生产和测试飞行构建都非常有效。

export default function App() {
  const [initializing, setInitializing] = useState(true);
  const [user, setUser] = useState();

  function handleAuthStateChanged(user){
    setUser(user);
    if(initializing) setInitializing(false);
  }

  useEffect(() => {
    const subscriber = firebase.auth().onAuthStateChanged(handleAuthStateChanged);
    return subscriber;
  }, []);

  if(initializing) return null;
  
  if(!user){
    return (
      < Welcome />
    );
  }
  return({
     <View>
       <Text>Something went wrong</Text>
     </View>
  });
}

所以现在我有点困惑为什么导航容器在 testflight 的构建中不起作用。我调试并尝试了一切,但没有任何效果。我用谷歌搜索导航容器是否不适用于测试飞行,但没有任何结果。请帮助我解决我的问题。

提前感谢您,如果您需要更多信息,请告诉我。

尝试在 testflight 上上传构建和测试,以便我可以在应用商店上传我的应用程序,但 testflight 中的应用程序显示空白屏幕,因为我在 expo go 中的制作显示我的应用程序运行完美,没有任何错误。

我希望为我的应用程序设计一个导航,首先进入欢迎屏幕,有按钮可以相应地引导用户进入注册屏幕或登录屏幕。但该应用程序仅显示空白屏幕。

react-native expo react-navigation testflight react-navigation-stack
1个回答
0
投票

我可以问一下 Stack.Navigator 出了什么问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.