我收到以下错误..
WARN可能未处理的承诺拒绝(ID:0):类型错误:null不是对象(计算"this.Auth0Module.hasValidCredentialManagerInstance")
更新-奇怪的是,当模拟器在Android Studio中运行时没有错误。但是当模拟器从VSCode运行时,错误出现。
到目前为止,这是我的代码... env变量工作正常,在Auth0端,我相信我已经设置了必要的应用程序URI。
我理解这个错误本质上是说,我们找不到您正在查找的Auth0Module对象属性的任何值?
我不知道如何解决这个错误或从哪里开始。欢迎所有的建议。
import {AUTH0_DOMAIN, CLIENT_ID} from '@env';
import { StatusBar } from 'expo-status-bar';
import React from 'react';
import { Button, StyleSheet, Text, View } from 'react-native';
import {useAuth0, Auth0Provider} from 'react-native-auth0';
export default function App() {
return (
<Auth0Provider domain={`${AUTH0_DOMAIN}`} clientId={`${CLIENT_ID}`}>
<View style={styles.container}>
<Text style={styles.title}>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
<LoginButton />
</View>
</Auth0Provider>
);
};
const LoginButton = () => {
const {authorize} = useAuth0();
const onPress = async () => {
try {
await authorize();
}
catch(error) {
console.log('this is an error: ',error);
}
}
return <Button onPress={onPress} title="Log In"></Button>
}
console.log(AUTH0_DOMAIN);
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#4f5',
alignItems: 'center',
justifyContent: 'center',
borderStyle: 'solid',
borderColor: 'black',
borderWidth: 5,
},
title : {
fontSize: 30,
}
});
下面是app.json
{
"expo": {
"name": "myPackage",
"slug": "myPackage",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
},
"package": "com.myPackage"
},
"web": {
"favicon": "./assets/favicon.png"
},
"plugins": [
[
"react-native-auth0",
{
"domain": "myDomain"
}
]
]
}
}
下面是一张包含更多信息的图片:
2条答案
按热度按时间rqqzpn5f1#
始终从库的源代码开始,例如,您的错误发生在以下位置:https://github.com/auth0/react-native-auth0/blob/89a7c9dc5f2ddd0d315b1249c88266cb8002ee01/src/credentials-manager/index.js#L134,并且它引用了本地的
A0Auth0
对象。如果您使用的是android,则可以在Android Studio中放置一个断点,并检查原生实现https://github.com/auth0/react-native-auth0/blob/89a7c9dc5f2ddd0d315b1249c88266cb8002ee01/android/src/main/java/com/auth0/react/A0Auth0Module.java(特别是
SecureCredentialsManager
)中发生的情况您可能忘记从www.example.com配置特定于平台的https://github.com/auth0/react-native-auth0#configure-the-sdk
wrrgggsh2#
本质上- react-native-auth 0是本机代码,与expo go不兼容
我发布这个答案是因为要运行原生代码你需要一个开发版本,而expo正引导人们使用eas来创建这些。然而eas的等待时间可能超过一个小时,而且你有有限数量的版本可以存储在他们的服务器上。也就是说,prebuild命令将允许你减少等待时间,只需要几个额外的步骤。
More information on Prebuild
如果您运行npx create-react-native-app,您可能需要配置与使用
npx create-expo-app
构建时不同的本地代码。这两个脚本生成的gradle文件与我所知道的略有不同。我的解决方案最终使用了npx create-expo-app
命令。在更新app.json上的代码(参见原始帖子)以包括插件部分之后,我做了以下工作
1.我运行了
npx expo prebuild --platform android
1.我从./android/app/build/output/apk/debug复制了apk到dropbox/谷歌驱动器等
1.我下载并安装了APK到物理设备上
1.已使用expo-go扫描条形码
渲染和工作正常。