React项目配置ApolloClient的createHttpLink出现TS2739错误如何解决?
报错原因
- 你当前使用的
createHttpLink来自已废弃的旧包apollo-link-http,它导出的ApolloLink类型定义和@apollo/client v3内置要求的ApolloLink类型不兼容,导致类型校验失败。
解决方案
- 首先卸载不需要的旧依赖
运行如下命令移除旧的apollo-link-http包:
# 使用npm npm uninstall apollo-link-http # 使用yarn yarn remove apollo-link-http
- 调整导入语句
@apollo/client v3已经内置了createHttpLink能力,直接从内置包导入即可,无需额外安装第三方依赖。 - 调整后的完整代码示例
import React from "react"; import "./app.scss"; import { ApolloLink, ApolloClient, ApolloProvider, InMemoryCache, createHttpLink // 改为从@apollo/client内置导入 } from "@apollo/client"; function App() { const client = new ApolloClient({ link: createHttpLink({ uri: "http://localhost:4000/graphql", credentials: "include", }), cache: new InMemoryCache(), }); return ( <ApolloProvider client={client}> <div className="App"> <h1>Hello there</h1> </div> </ApolloProvider> ); } export default App;
补充说明
- 如果你还在使用其他
apollo-link-*前缀的旧包(如apollo-link-error、apollo-link-context等),也都可以直接从@apollo/client中导入对应的能力,无需单独安装旧版本包,避免再次出现类型不兼容问题。 - 如果修改后仍有残留类型报错,可以删除项目中的
node_modules文件夹、package-lock.json或yarn.lock文件后重新安装依赖,再重启IDE的TypeScript服务即可解决。
内容的提问来源于stack exchange,提问作者chai
相关产品推荐
相关产品推荐

