【问题标题】:Variable \"$file\" got invalid value变量 \"$file\" 的值无效
【发布时间】:2021-08-19 16:13:28
【问题描述】:

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

变量“$file”的值无效 { resolve: [function], reject: [功能],承诺:{},文件:{文件名: “insung-yoon-TPvE8qPfMr0-unsplash.jpg”,mimetype:“图像/jpeg”, encoding: "7bit", createReadStream: [function createReadStream] } }; 上传值无效。

我找到的唯一解决方案是禁用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 })
}

我的 InputType 如下:

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

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

【问题讨论】:

    标签: javascript typescript file-upload graphql


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-02-15
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 2014-05-10
        • 2015-05-14
        • 2019-02-12
        • 2019-09-02
        相关资源
        最近更新 更多