我正在使用selectMandateStatusFromSameMandate
来生成我的GraphQL TypeDef文件的TS类型。我还使用了来自apollo服务器的内置graphql-codegen
类型来处理文件上传,但是Upload TypeDef不在我自己的模式中,而是内置在apollo服务器本身中的某个位置。当我尝试通过Upload
生成时,收到错误消息:
graphql-codegen
因为它不在我自己的typedef文件中。
我可以以某种方式Error: Unknown type "Upload". Did you mean "Float"?
Unknown type "Upload". Did you mean "Float"?
内置的阿波罗“上传”类型来自己添加typedef吗?
答案 0 :(得分:0)
好吧,如果您遇到此错误,只需“导入”标量(不是类型)
通过
scalar Upload
使用您的typedef
答案 1 :(得分:0)
我面临着同样的问题。您必须定义自己的上载类型,在codegen.yml
配置文件中定义自定义标量,以及其他一些东西。
# codegen.yml
config:
scalars:
Date: Date
Upload: FileUpload
您可以使用graphql-codegen(@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
并且,如果您使用Apollo Server 2,则默认的Apollo行为是在架构中自动添加scalar Upload
,因此您需要使用makeExecutableSchema
中的graphql-tools
!>
const server = new ApolloServer({
schema: makeExecutableSchema({
typeDefs: schema,
resolvers,
})
享受!