You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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@beta
    
    同时保持graphql@^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文件。

内容的提问来源于stack exchange,提问作者Bikrant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:50:19