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

TypeGraphQL集成graphql-upload时InputType的file字段需显式指定类型报错如何解决

解决方案

这个报错的根本原因是TypeGraphQL的运行时反射系统无法从编译期的TypeScript类型FileUpload推断出对应的GraphQL标量类型,同时你的解析器参数类型声明也存在错误,按以下两步修改即可:

1. 修正InputType定义

给@Field装饰器显式传入运行时对应的GraphQL上传标量类型GraphQLUpload:

import { FileUpload, GraphQLUpload } from 'graphql-upload'

...
@InputType({ description: 'Upload data input' })
export class InputType {
  @Field(() => GraphQLUpload, {
    nullable: true,
    description: 'File upload',
  })
  @Joiful.any()
  file: FileUpload
}

2. 修正Mutation解析器的参数类型声明

你之前给data参数错误指定了GraphQLUpload类型,实际上data是你自定义的InputType类型,修改如下:

import { ReturnType, InputType } from '@pkg/schemas'
import { Context } from '@pkg/types'

...
  @Mutation(() => ReturnType)
  uploadFileAndData(
    @Ctx() ctx: Context,
    @Arg('data', () => InputType, { description: 'File Upload' }) data: InputType,
  ): Promise<ReturnType> {
    return functionWithMagic({ ctx, data })
  }

额外注意事项

  • 确保你已经在GraphQL服务层正确注册了graphql-upload对应的上传解析中间件
  • 如果你的TypeGraphQL版本低于1.0,需要额外将GraphQLUpload注册为自定义标量后再使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:54:03