首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apollo Server:弹出内置的"Upload“类型,以生成带有graphql-codegen的TS类型

Apollo Server:弹出内置的"Upload“类型,以生成带有graphql-codegen的TS类型
EN

Stack Overflow用户
提问于 2019-11-27 17:44:33
回答 1查看 440关注 0票数 2

我正在使用graphql-codegen生成我的TS类型的GraphQL TypeDef文件。我也使用来自apollo服务器的内置Upload类型来处理文件上传,但是上传TypeDef不在我自己的模式中,它内置在apollo服务器本身的某个地方。当我尝试通过graphql-codegen生成时,我收到一个错误:

代码语言:javascript
复制
Error: Unknown type "Upload". Did you mean "Float"?

Unknown type "Upload". Did you mean "Float"?

因为它不在我自己的typedef文件中。

我能以某种方式上传内置的阿波罗“eject”类型来添加我自己的类型定义吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-11 22:26:33

我也面临着同样的问题。你必须定义你自己的上传类型,在你的codegen.yml配置文件中定义一个自定义标量,以及其他一些东西。

代码语言:javascript
复制
# codegen.yml
config:
  scalars:
    Date: Date
    Upload: FileUpload

您可以使用graphql- FileUpload (@graphql-codegen/add)插件添加内容在生成的文件中导入您的自定义代码类型:

代码语言:javascript
复制
# codegen.yml
generates:
  # Schema ans resolvers types
  ./src/graphql/generated/schema.types.ts:
    plugins:
      - add:
          content: "import { FileUpload } from \"path/to/your/type/file\""
      - typescript
代码语言:javascript
复制
import { ReadStream } from "fs"

export interface FileUpload {
  filename: string
  mimetype: string
  encoding: string
  createReadStream(): ReadStream
}

顺便说一句,你应该安装@types/node。而且,为了简单起见,你必须在你的graphql schema中定义一个标量(否则graphl-cogeden会告诉你Upload是未知的。

所以:

代码语言:javascript
复制
# schema.graphql
scalar Upload

而且,如果您使用的是Apollo Server2,那么Apollo的默认行为就是在您的模式中自动添加scalar Upload,因此您需要使用来自graphql-tools

代码语言:javascript
复制
const server = new ApolloServer({
  schema: makeExecutableSchema({
    typeDefs: schema,
    resolvers,
  })

享受吧!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59067245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档