首页 > 解决方案 > 仅适用于在 Android 上远程调试 JS

问题描述

我正在使用 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
})

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

问题是 JWT 令牌似乎既不是由 AsyncStorage 也不是由 AWS Auth Class 检索,我无法解决它,因为:

  1. 我在没有调试的情况下在 Android 真实设备上运行:不起作用。
  2. 我在带有调试功能的 Android 上运行:它可以工作。

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

希望有人可以帮助我。

标签: debuggingreact-nativeasync-awaitasyncstorageaws-amplify

解决方案


我在这里遇到了类似的问题。

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

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

解决方案是将值转换为字符串,然后再将它们保存到 storage中。


推荐阅读