仅适用于Android上的Debug JS Remote

Job*_*bel 6 debugging async-await react-native asyncstorage aws-amplify

我正在使用AsyncStorage来存储来自AWS的JWT令牌,但是有一个意外的情况我想弄清楚。

这是我当前的代码:

const retrieveJwt = async () => {
  try {
    const value = await AsyncStorage.getItem('jwt');
    if (value !== null) {
      return value;
    }
    else{      
      let user = await Auth.currentAuthenticatedUser();
      let jwt = user.signInUserSession.accessToken.jwtToken;
      return jwt
    }
   } catch (error) {
     // Error retrieving data
     let user = await Auth.currentAuthenticatedUser();
      let jwt = user.signInUserSession.accessToken.jwtToken;
      return jwt
   }
}

// AppSync init
const client = new Client({
  url: AppSync.graphqlEndpoint,
  region: AppSync.region,
  auth:{
    type: 'AMAZON_COGNITO_USER_POOLS',
    jwtToken: async () => await retrieveJwt(),
  },
  disableOffline: true
})
Run Code Online (Sandbox Code Playgroud)

当我运行此应用程序时,我得到了:

  • 未调试的Android真实设备:失败
  • 带有远程调试JS的 Android真实设备:成功
  • 无需调试的iOS模拟器:成功
  • 带有远程调试JS的 iOS模拟器:成功

问题在于,似乎既未通过AsyncStorage也未通过AWS Auth类检索JWT令牌,并且由于以下原因我无法解决它:

  1. 我在没有调试的Android真实设备上运行:无法正常工作。
  2. 我在Android上通过调试运行:它可以工作。

因此,我无法进行调试以查看问题所在,因为当我尝试在Android上进行调试时,它可以工作。

希望有人可以帮助我。

小智 2

我这里也有类似的问题。

我的问题不是当我从 读取值时AsyncStorage,而是当我尝试保存一些值时。

当我使用远程调试器时,一切都工作正常,但如果没有它,就会Error出现。

解决方案是在将值保存到存储之前将其转换为字符串