I try to upload a file with GraphQL. While upload, I get following error message:
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.
The only solution I found, was to disable the upload at apollo-graphql
and add graphql-upload
new ApolloServer({ schema, context, uploads: false })
app.use(graphqlUploadExpress({ maxFileSize: 10000, maxFiles: 10 }))
I already had added this setting, but the issue is still there.
My mutation looks like:
@Mutation(() => ReturnType)
uploadFileAndData(
@Ctx() ctx: Context,
@Arg('data', { description: 'File Upload' }) data: MyInputType,
): Promise<ReturnType> {
return functionWithMagic({ ctx, data })
}
and my InputType like:
import { FileUpload, GraphQLUpload } from 'graphql-upload'
@InputType({ description: 'Upload data input' })
export class MyInputType {
@Field(() => GraphQLUpload)
@Joiful.any()
file: FileUpload
}
Advertisement
Answer
After a lot of searching, I finally found my issue. We are using a mono repo, and had installed two different version of file-upload
in two packages. When I changed the version, at both packages on the same version and the error is gone.