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

GraphQL运行createFriend mutation报错“需为输入类型但得到Friend”求助

GraphQL createFriend mutation报错问题解答

你贴出的SDL(Schema Definition Language)语法没有问题,完全符合GraphQL规范要求。

报错信息: "The type of Mutation.createFriend(input:) must be Input Type but got: Friend."

GraphQL明确规定:所有接口入参的类型必须是Input类型(用input关键字声明),不能使用Object类型(用type关键字声明),该报错就是框架检测到你createFriend的input参数使用了Friend对象类型导致的。

报错的核心原因是你在代码层面关联Schema定义时,错误地将createFriend的input参数类型绑定为了Friend对象类型,而非你声明的FriendInput输入类型,和你写的SDL本身无关。

你可以按照以下方向排查:

  • 如果你使用TypeGraphQL等装饰器式框架,检查createFriend方法的参数装饰器,确认是否错误将input的类型指定为了Friend,修正为FriendInput即可,示例修正后写法:
    @Mutation(() => Friend)
    createFriend(@Arg('input', () => FriendInput) input: FriendInput) {
      // 业务逻辑
    }
    
  • 如果你使用graphql-js手动构造Schema对象,检查Mutation中createFriend字段的args配置,确认input的type属性是否错误赋值为Friend,替换为FriendInput即可。
  • 如果你使用Apollo Server等直接支持SDL书写的框架,检查是否拆分多份SDL文件时FriendInput的定义没有被正确合并到最终生效的Schema中,或是Resolver配置中额外覆盖了参数类型,修正引入逻辑即可。

你可以单独使用你贴出的这段完整SDL作为唯一Schema启动服务验证,如果不再触发该报错,即可完全确定是你业务代码中的类型引用错误导致的问题。


内容的提问来源于stack exchange,提问作者Scott Wells

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:00:01