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

构建项目报错connectionField不存在于ObjectDefinitionBlock<"Query">类型

报错场景

基于Next.js+GraphQL+Prisma技术栈参考官方全栈教程构建项目时触发构建失败,最终命令执行退出码为1,报错文件路径为./graphql/types/Link.ts,错误定位在第20行第7列。

错误信息

TS类型报错:Property 'connectionField' does not exist on type 'ObjectDefinitionBlock<"Query">'
对应报错代码片段:

18 |   type: 'Query',
19 |   definition(t) {
> 20 |     t.connectionField('links', {
|       ^
21 |       type: Link,
22 |       resolve: async (_, { after, first }, ctx) => {
23 |         const offset = after ? cursorToOffset(after) + 1 : 0;
产生原因
  • 核心原因:connectionField是Relay风格分页的扩展API,不属于Nexus核心库自带方法,需要引入对应扩展插件并完成注册,才会在类型定义块的t对象上挂载该方法。未注册插件时TS类型定义中不存在该属性,就会触发报错。
  • 常见诱因:依赖版本不匹配。教程发布时间较早,如果安装依赖时拉取了跨大版本的最新Nexus生态包,插件导出规则、API挂载逻辑发生变更,也会触发该类型错误。
修复方案
  1. 安装缺失的Relay连接分页插件依赖,在项目根目录执行命令:
    yarn add nexus-plugin-relay-connection
    
  2. 在GraphQL Schema的初始化入口文件(通常路径为./graphql/schema.ts)中注册该插件,示例配置:
    import { makeSchema } from 'nexus'
    import { relayConnectionPlugin } from 'nexus-plugin-relay-connection'
    // 保留项目中原有的其他引入内容
    
    export const schema = makeSchema({
      types: [
        // 保留项目中原有的所有类型定义,包含Link类型
      ],
      plugins: [
        relayConnectionPlugin, // 新增注册该插件
        // 保留项目中原有的其他插件配置
      ],
      // 其余原有配置项保持不变即可
    })
    
  3. 若注册插件后仍报错,属于依赖版本错配问题:删除本地node_modules文件夹与yarn.lock锁文件,在package.json中将nexus、nexus-plugin-prisma、@prisma/client等GraphQL、Prisma相关依赖的版本号,对齐教程中指定的版本,重新执行yarn install安装依赖。
  4. 配置修改完成后,重启IDE的TS服务(VS Code可通过快捷键Ctrl+Shift+P调出命令面板,选择「Restart TS Server」),重新执行构建命令验证修复结果。

内容的提问来源于stack exchange,提问作者Hany Morcos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:42:17