变量 \"$file\" 获得无效值

Variable \"$file\" got invalid value

我尝试使用 GraphQL 上传文件。上传时,我收到以下错误消息:

Variable "$file" got invalid value { resolve: [function], reject: [function], promise: {}, file: { filename: "insung-yoon-TPvE8qPfMr0-unsplash.jpg", mimetype: "image/jpeg", encoding: "7bit", createReadStream: [function createReadStream] } }; Upload value invalid.

我找到的唯一解决方案是在 apollo-graphql 处禁用上传并添加 graphql-upload

new ApolloServer({ schema, context, uploads: false })
app.use(graphqlUploadExpress({ maxFileSize: 10000, maxFiles: 10 }))

我已经添加了这个设置,但问题仍然存在。

我的变异看起来像:

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

我的输入类型如下:

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

...
@InputType({ description: 'Upload data input' })
export class MyInputType {
  @Field(() => GraphQLUpload)
  @Joiful.any()
  file: FileUpload
}

经过大量搜索,我终于找到了我的问题。我们正在使用单声道存储库,并在两个包中安装了两个不同版本的 file-upload。当我更改版本时,在同一版本的两个包中,错误消失了。

补充一下,如果您使用的是 Altair graphql 客户端,则此错误可能源自客户端本身。

尝试: 1- 关闭所有选项卡并再次启动 altair 2- 重做第一步,然后关闭查询选项卡并重写查询。