我正在用iOS开发中的Apollo学习有关graphql的知识,有一次我在编译和运行脚本时遇到了可怕的新手错误,即“定义不可执行”。
经过一些搜索,我在Apollo graphql Github issue thread中发现这可能是因为我将架构文件(* .graphql)包含在apollo-codegen
glob中。 (请注意,apollo-codegen
CLI重命名为apollo
CLI,这就是我安装和使用的CLI。)
问题是,我不知道什么是阿波罗glob(我第一次听到它)以及如何更改它。我在互联网上搜索了有关apollo glob的信息,发现的内容类似于命令行模式,但也有一些网站称它是某种文件.ts
。
就我而言,应如何从阿波罗glob中排除架构文件,以便对其进行编译?我需要使用哪一步?请假设我对apollo CLI或一般的Linux CLI知之甚少。我什至不知道什么是阿波罗水球,以及如何修改它。谢谢。
这是完整的错误:
/server/types.graphql:4: The Customer definition is not executable.
/server/src/hello.graphql:1: The HelloPayload definition is not executable.
/server/src/hello.graphql:5: The Query definition is not executable.
/User.graphql:2: Cannot query field "allCustomer" on type "Query". Did you mean "allUsers"?
/User.graphql:7: Unknown type "Customer". Did you mean "User"?
/User.graphql:14: Cannot query field "createCustomer" on type "Mutation". Did you mean "createUser" or "updateUser"?
这是types.graphql
的内容:
type Customer @model {
id: ID! @isUnique
name: String
dateOfBirth: DateTime
telephone: String
}
这是hello.graphql
(自动生成)的内容:
type HelloPayload {
message: String!
}
extend type Query {
hello(name: String): HelloPayload
}
这是user.graphql
的内容:
query AllCustomer {
allCustomer {
...CustomerDetails
}
}
fragment CustomerDetails on Customer {
id
name
telephone
}
mutation CreateCustomer($name: String!, $telephone: String!) {
createCustomer(name: $name, telephone: $telephone) {
id
}
}
(我这里也有schema.json
和package.json
)
当我的代码中都没有对象时,我什至不知道为什么脚本会不断谈论对象User
或allUsers
或createUser
或updateUser
。在某个时候。它是自动生成的。但是后来我尝试将它们全部重命名为Customer,但是脚本{@ 1}}始终引用User
对象,尽管types.graphql
已经承认至少存在一个不可执行的对象Customer
。