我已经使用Firebase电子邮件/密码身份验证实现了一些基本的注册/登录功能。在模拟器和Expo Go应用程序上一切都很好,但当我使用时
expo build:android
并在我的安卓手机上安装apk,它似乎会崩溃
onAuthStateChanged
没有错误。我试着抓住这个错误,但没有成功。
我将其设置如下:
RootNavigator.js
:
export default function RootNavigator({ navigation }) {
const [errorMsg, setErrorMsg] = useState();
const { user, setUser } = useContext(AuthenticatedUserContext);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
const unsubscribeAuth = auth.onAuthStateChanged(async authenticatedUser => {
try {
await (authenticatedUser ? setUser(authenticatedUser) : setUser(null));
setIsLoading(false);
} catch (error) {
console.log(error);
setErrorMsg(error.message);
setIsLoading(false);
}
});
return unsubscribeAuth;
}, []);
if (isLoading) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<ActivityIndicator size='large' />
<Text style={{ color: 'red' }}>Loading...</Text>
{errorMsg && <Text style={{ color: 'red' }}>{errorMsg}.</Text>}
</View>
);
}
return (
<NavigationContainer>
{user ? <HomeStack /> : <AuthStack />}
</NavigationContainer>
);
}
在
Login
屏幕我有一个简单的功能,可以让用户登录
const auth = Firebase.auth();
const onLogin = async () => {
try {
if (email !== '' && password !== '') {
await auth.signInWithEmailAndPassword(email, password);
}
} catch (error) {
Alert.alert(error.message)
setLoginError(error.message);
navigation.navigate('Home')
}
};
Firebase初始化配置
import firebase from 'firebase/app';
import 'firebase/firestore';
import 'firebase/auth';
import Constants from 'expo-constants';
// Initialize Firebase
const firebaseConfig = {
apiKey: Constants.manifest.extra.apiKey,
authDomain: Constants.manifest.extra.authDomain,
projectId: Constants.manifest.extra.projectId,
storageBucket: Constants.manifest.extra.storageBucket,
databaseURL: Constants.manifest.extra.databaseURL,
messagingSenderId: Constants.manifest.extra.messagingSenderId,
appId: Constants.manifest.extra.appId
};
let Firebase;
if (firebase.apps.length === 0) {
Firebase = firebase.initializeApp(firebaseConfig);
}
export default Firebase;
问题是,当在我的android上使用已安装的apk时,我只会看到
Loading
的部分
RootNavigator
-我无法使用Expo Go应用程序进行复制,因此找不到问题