Apollo Server v4集成TypeGraphQL及文件上传问题求助
Apollo Server v4 集成 TypeGraphQL 问题解决指南
一、依赖冲突问题解决
- TypeGraphQL稳定版目前仅支持GraphQL ^15.3.0,但Apollo Server v4强制要求GraphQL ^16.6.0,这是冲突的核心原因。
- 可行的临时解决办法:安装TypeGraphQL的beta版本,它已经适配了GraphQL 16。执行命令:
同时保持npm install type-graphql@betagraphql@^16.6.0和@apollo/server@^4.x的版本,这样就能同时满足两个库的依赖要求。 - 补充:beta版本虽不是正式版,但核心功能稳定,可用于生产环境,等TypeGraphQL正式发布支持GraphQL 16的版本后再切换即可。
二、TypeGraphQL 中的文件上传差异
- 前置配置和常规Apollo Server一致:需要先挂载
graphqlUploadExpress中间件,在Apollo Server实例初始化前完成配置。 - TypeGraphQL的专属简化点:
- 无需手动定义上传标量类型,TypeGraphQL内置了
Upload类型,直接在Resolver的参数中使用即可。 - 示例代码:
import { Resolver, Mutation, Arg } from "type-graphql"; import { Upload } from "type-graphql"; import { GraphQLUpload } from "graphql-upload"; @Resolver() export class FileResolver { @Mutation(() => String) async uploadFile( @Arg("file", () => Upload) file: Promise<{ createReadStream: () => NodeJS.ReadableStream; filename: string; mimetype: string; encoding: string; }> ) { const { createReadStream, filename } = await file; // 这里编写文件流处理逻辑,比如保存到本地或云存储 return `文件 ${filename} 上传完成`; } } - 注意事项:在构建Schema时,要把
GraphQLUpload加入到resolvers数组中,或者通过emitSchemaFile让TypeGraphQL自动生成包含该标量的Schema文件。
- 无需手动定义上传标量类型,TypeGraphQL内置了
内容的提问来源于stack exchange,提问作者Bikrant
相关产品推荐
相关产品推荐

