仅适用于Android上的Debug JS Remote

时间:2018-08-24 09:54:15

标签: debugging react-native async-await 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
})

当我运行该应用程序时,我得到了这个:

  • 未经调试的Android真实设备:失败
  • 具有远程调试JS 的Android真实设备:成功
  • 没有调试的IOS模拟器:成功
  • 带有远程调试JS的
  • IOS模拟器:成功

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

  1. 我在没有调试的Android真实设备上运行:无法正常工作。
  2. 我在带有调试功能的Android上运行:它有效。

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

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

我在这里有一个类似的问题。

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

当我使用远程调试器时,一切正常,但是没有Error出现。

解决方案是将值转换为字符串,然后再将其保存到存储中