reactjs - 属性 'setLink' 在类型 'ApolloClient<NormalizedCacheObject>' 中缺失,但在类型 'ApolloClient<any> 中需要

标签 reactjs typescript react-apollo apollo-client

我正在使用 react 和 apollo 客户端建立一个新的 typescript 项目。我正在尝试像这样连接客户端:

const client = new ApolloClient({
  cache: new InMemoryCache(),
  link: new HttpLink({
    uri: 'http://localhost:3000/graphql',
    headers: {
      authorization: localStorage.getItem('token'),
    },
  }),
});

function App() {
  return (
    <ApolloProvider client={client}>
      <div className="App">
       ...content goes here
      </div>
    </ApolloProvider>
    );
}
但是,这会在运行时引发错误:
TypeScript error in /src/App.tsx(60,21):
Property 'setLink' is missing in type 'ApolloClient<NormalizedCacheObject>' but required in type 'ApolloClient<any>'.  TS2741

    58 | function App() {
    59 |   return (
  > 60 |     <ApolloProvider client={client}>
       |                     ^
    61 |       <div className="App">
由于这似乎是一个基于类型的问题,因此在按照此处的示例创建 Apollo 客户端时,我试图明确说明:https://github.com/apollographql/apollo-client/issues/2503
const client = new ApolloClient<NormalizedCacheObject>{ ...
但是没有骰子。与工作示例相比,我不确定为什么我有决斗类型。帮助?

最佳答案

@apollo/client 包包含从以前解耦的库(如 apollo-client 和 apollo-cache-inmemory)的导入。
如果您的导入如下所示:

import { ApolloClient } from 'apollo-client'
import { InMemoryCache, NormalizedCacheObject } from 'apollo-cache-inmemory'
切换到这个:
import {
  ApolloClient,
  InMemoryCache,
  NormalizedCacheObject,
} from '@apollo/client'

关于reactjs - 属性 'setLink' 在类型 'ApolloClient<NormalizedCacheObject>' 中缺失,但在类型 'ApolloClient<any> 中需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63005568/

相关文章:

reactjs - `react-scripts build'正在使用1+ GB的RAM

javascript - 使用 CSS 模块和第三方包

graphql - `Cannot use e "__Schema "from another module or realm.` 和 `Duplicate "graphql "modules` 使用 ApolloClient

ruby-on-rails - Apollo 和 GraphQL CORS

javascript - GraphQl 中的注册身份验证不起作用 : Error:- signupUser: null

javascript - 如何修复意外 token "/"的 ESLint 解析错误?

reactjs - TypeError : options. 提供程序在下一步身份验证中不可迭代

typescript - 在 Visual Studio Code 中创建没有语言服务器的诊断条目

Angular 6 - @ViewChild 访问 nativeElement 跨度类的值

对预检请求的 Angular HttpClient 响应未通过访问控制检查 : It does not have HTTP ok status