You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apollo中调用useQuery传入resolver方法报TS2345错误如何解决?

错误原因
  • 你混淆了Apollo服务端Resolver和客户端查询参数的用途:resolvers.Query.movies是定义在服务端的解析函数,作用是服务端收到对应查询请求时,执行逻辑拉取数据返回。
  • 前端useQuery钩子的第一个入参要求是DocumentNode类型的GraphQL查询文档(通常用gql标签包裹查询语句生成),你传入服务端的Resolver函数,类型完全不匹配,因此触发TS报错。
修复方案
  1. 首先在客户端代码中定义对应业务的GraphQL查询语句,使用gql标签转换为DocumentNode类型:
// 从@apollo/client导入依赖
import { gql, useQuery } from '@apollo/client';

// 定义movies查询,字段和服务端Movie类型保持一致
const MOVIES_QUERY = gql`
  query GetMovies {
    movies {
      id
      name
      tmdb_id
    }
  }
`;
  1. 替换useQuery的入参为上面定义的查询文档,不要引入/传入服务端的Resolver代码:
const DashboardComponent = () => {
  // 也可以添加泛型做类型约束,比如useQuery<{movies: Movie[]}>(MOVIES_QUERY)
  const {loading, error, data} = useQuery(MOVIES_QUERY);

  // 后续业务逻辑
}
  1. 额外校验点:确保项目根组件已经正确包裹了配置好服务端地址的ApolloProvider,否则前端请求无法到达你的Apollo Server。

内容的提问来源于stack exchange,提问作者Peter Boomsma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:54:03