[英]Apollo Server: Eject built in "Upload" Type to generate TS Types with graphql-codegen
我正在使用graphql-codegen
来生成我的 GraphQL TypeDef 文件的 TS 类型。 我还使用来自 apollo 服务器的内置Upload
类型来处理文件上传,但 Upload TypeDef 不在我自己的架构中,它内置于 apollo-server 本身的某个地方。 当我尝试通过graphql-codegen
生成时,我收到一个错误:
Error: Unknown type "Upload". Did you mean "Float"?
Unknown type "Upload". Did you mean "Float"?
因为它不在我自己的 typedef 文件中。
我可以以某种方式eject
内置的阿波罗“上传”类型以自己添加 typedef 吗?
我面临着同样的问题。 您必须定义自己的上传类型,在codegen.yml
配置文件中定义自定义标量,以及其他一些内容。
# codegen.yml
config:
scalars:
Date: Date
Upload: FileUpload
您可以使用 graphql- @graphql-codegen/add
( @graphql-codegen/add
) 的插件 add-content 在生成的文件中导入自定义 FileUpload 类型:
# 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
import { ReadStream } from "fs"
export interface FileUpload {
filename: string
mimetype: string
encoding: string
createReadStream(): ReadStream
}
顺便说一句,你应该安装@types/node
。 而且,为了使事情更简单,您必须在您的 graphql 模式中定义一个标量(否则 graphl-cogeden 会告诉您Upload
是未知的。
所以:
# schema.graphql
scalar Upload
而且,如果你使用阿波罗服务器2,默认阿波罗的行为是自动添加scalar Upload
您的模式,所以你需要使用makeExecutableSchema
来自graphql-tools
!
const server = new ApolloServer({
schema: makeExecutableSchema({
typeDefs: schema,
resolvers,
})
享受!
确定,如果您有此错误,只需“导入”标量(不是类型)
通过
scalar Upload
在你的typedef中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.