我正在使用 Nestjs graphql 框架,我想使用 apollo 标量上传
我已经能够在另一个不包含 Nestjs 的项目中使用标量。
schema.graphql
App.module.ts注册graphql
GraphQLModule.forRoot({
typePaths: ['./**/*.graphql'],
resolvers: { Upload: GraphQLUpload },
installSubscriptionHandlers: true,
context: ({ req }) => ({ req }),
playground: true,
definitions: {
path: join(process.cwd(), './src/graphql.classes.ts'),
outputAs: 'class',
},
uploads: {
maxFileSize: 10000000, // 10 MB
maxFiles: 5
}
}),
pets.resolver.ts 突变 createPet
@Mutation('uploadFile')
async uploadFile(@Args('fileUploadInput') fileUploadInput: FileUploadInput) {
console.log("TCL: PetsResolver -> uploadFile -> file", fileUploadInput);
return {
id: '123454',
path: 'www.wtf.com',
filename: fileUploadInput.file.filename,
mimetype: fileUploadInput.file.mimetype
}
}
pets.type.graphql
type Mutation {
uploadFile(fileUploadInput: FileUploadInput!): File!
}
input FileUploadInput{
file: Upload!
}
type File {
id: String!
path: String!
filename: String!
mimetype: String!
}
我希望标量与 Nestjs 一起使用,但我的实际结果是
{"errors":[{"message":"Promise resolver undefined is not a function","locations":[{"line":2,"column":3}],"path":["createPet"],"extensions":{"code":"INTERNAL_SERVER_ERROR","exception":{"stacktrace":["TypeError: Promise resolver undefined is not a function"," at new Promise (<anonymous>)"," at TransformOperationExecutor.transform (E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\TransformOperationExecutor.ts:119:32)"," at E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\TransformOperationExecutor.ts:62:40"," at Array.forEach (<anonymous>)"," at TransformOperationExecutor.transform (E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\TransformOperationExecutor.ts:41:30)"," at _loop_1 (E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\TransformOperationExecutor.ts:226:43)"," at TransformOperationExecutor.transform (E:\\projectos\\Gitlab\\latineo\\latineo-api\\node_modules\\class-transformer\\TransformOperationExecutor.js:240:17)"," at ClassTransformer.plainToClass (E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\ClassTransformer.ts:43:25)"," at Object.plainToClass (E:\\projectos\\Gitlab\\latineo\\latineo-api\\src\\index.ts:37:29)"," at ValidationPipe.transform (E:\\projectos\\Gitlab\\latineo\\latineo-api\\node_modules\\@nestjs\\common\\pipes\\validation.pipe.js:50:41)"," at transforms.reduce (E:\\projectos\\Gitlab\\latineo\\latineo-api\\node_modules\\@nestjs\\core\\pipes\\pipes-consumer.js:15:28)"," at process._tickCallback (internal/process/next_tick.js:68:7)"]}}}],"data":null}