我正在使用graphql-codegen生成我的TS类型的GraphQL TypeDef文件。我也使用来自apollo服务器的内置Upload类型来处理文件上传,但是上传TypeDef不在我自己的模式中,它内置在apollo服务器本身的某个地方。当我尝试通过graphql-codegen生成时,我收到一个错误:
Error: Unknown type "Upload". Did you mean "Float"?
Unknown type "Upload". Did you mean "Float"?因为它不在我自己的typedef文件中。
我能以某种方式上传内置的阿波罗“eject”类型来添加我自己的类型定义吗?
发布于 2020-12-11 22:26:33
我也面临着同样的问题。你必须定义你自己的上传类型,在你的codegen.yml配置文件中定义一个自定义标量,以及其他一些东西。
# codegen.yml
config:
scalars:
Date: Date
Upload: FileUpload您可以使用graphql- FileUpload (@graphql-codegen/add)插件添加内容在生成的文件中导入您的自定义代码类型:
# codegen.yml
generates:
# Schema ans resolvers types
./src/graphql/generated/schema.types.ts:
plugins:
- add:
content: "import { FileUpload } from \"path/to/your/type/file\""
- typescriptimport { ReadStream } from "fs"
export interface FileUpload {
filename: string
mimetype: string
encoding: string
createReadStream(): ReadStream
}顺便说一句,你应该安装@types/node。而且,为了简单起见,你必须在你的graphql schema中定义一个标量(否则graphl-cogeden会告诉你Upload是未知的。
所以:
# schema.graphql
scalar Upload而且,如果您使用的是Apollo Server2,那么Apollo的默认行为就是在您的模式中自动添加scalar Upload,因此您需要使用来自graphql-tools!
const server = new ApolloServer({
schema: makeExecutableSchema({
typeDefs: schema,
resolvers,
})享受吧!
https://stackoverflow.com/questions/59067245
复制相似问题