首页 > 解决方案 > 尝试使用 Apollo 客户端将我的 JWT 令牌从异步存储获取到请求标头时未处理的承诺拒绝

问题描述

我正在使用 Apollo 客户端的 setContext 和 createHttpLink 函数将 JWT 令牌从存储中取出到请求标头中,但我不断收到错误消息: [Unhandled promise rejection: Error: Response not successful: Received status code 500]

当我像这样创建 apollo 客户端对象时,我的应用程序运行得非常好:

const client = new ApolloClient({
  uri: 'http://<myIPaddress>:4000/graphql',
  cache: new InMemoryCache()
});

但是,我正在关注 apollo 客户端文档,而我使用了这段代码:

const httpLink = createHttpLink({uri: 'http://<myIPaddress>:4000/graphql'});

const authLink = setContext(async (req, { headers }) => {
  const token = await AsyncStorage.getItem('AUTH_TOKEN');

  return {
    headers: {
      ...headers,
      Authorization: token ? `Bearer ${token}` : null
    }
  };
});

const client = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache()
});

但是,每当我尝试运行我的任何 graphql 查询或突变时,这都会使我的应用程序完全崩溃。任何帮助,将不胜感激。

这是我的进口:

import {
  ApolloClient,
  ApolloProvider,
  createHttpLink,
  InMemoryCache
} from '@apollo/client';
import { setContext } from '@apollo/client/link/context';

标签: javascriptreact-nativegraphqlapolloapollo-client

解决方案


推荐阅读