GraphQL 架构错误
Posted
技术标签:
【中文标题】GraphQL 架构错误【英文标题】:GraphQL schema error 【发布时间】:2017-06-12 02:23:26 【问题描述】:所以当我启动我的服务器时,我会得到这个错误列表
/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:966
throw (0, _error.syntaxError)(lexer.source, token.start, 'Expected ' + kind + ', found ' + (0, _lexer.getTokenDesc)(token));
^
GraphQLError
at syntaxError (/Users/charlie/workspace/HackQLServer/node_modules/graphql/error/syntaxError.js:28:15)
at expect (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:966:32)
at parseName (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:88:15)
at parseInputValueDef (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:743:14)
at many (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:1015:16)
at parseArgumentDefs (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:735:10)
at parseFieldDefinition (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:714:14)
at any (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:1002:16)
at parseObjectTypeDefinition (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:683:16)
at parseTypeSystemDefinition (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:607:16)
at parseDefinition (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:148:16)
at parseDocument (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:106:22)
at Object.parse (/Users/charlie/workspace/HackQLServer/node_modules/graphql/language/parser.js:43:10)
at buildSchemaFromTypeDefinitions (/Users/charlie/workspace/HackQLServer/node_modules/graphql-tools/src/schemaGenerator.ts:145:37)
at _generateSchema (/Users/charlie/workspace/HackQLServer/node_modules/graphql-tools/src/schemaGenerator.ts:72:18)
at makeExecutableSchema (/Users/charlie/workspace/HackQLServer/node_modules/graphql-tools/src/schemaGenerator.ts:97:20)
所有这些都出现了。我真的不明白我的错误在哪里。这是我的架构文件,我认为错误是
const typeDefinitions = `
type Author
id: Int
firstName: String
lastName: String
posts: [Post]
type Post
id: Int
title: String
text: String
author: Author
type Query
author(firstName: String, lastName: String): Author
allPosts(): [Post!]!
schema
query: Query
`
export default [typeDefinitions]
如果您认为错误可能源于它,这也是我的解析器文件
import Author, Post from './connectors'
const resolvers =
Query:
author: (root, args) =>
return Author.find( where: args )
,
allPosts: (root, args) =>
return Post.findAll()
,
allAuthors: (root, args) =>
return Author.findAll()
,
Author:
posts: (author) =>
return author.getPosts()
,
Post:
author: (post) =>
return post.getAuthor()
export default resolvers
如果您看到任何内容,请告诉我,因为我无法弄清楚这一点。我还在使用 Sequelize 与 sqlite 进行数据库连接,以防您想知道我的模型查询的语法是什么。
【问题讨论】:
【参考方案1】:我认为错误在这一行
type Query
author(firstName: String, lastName: String): Author
allPosts(): [Post!]!
因为allPost
没有参数,所以不需要双亲。应该是
type Query
author(firstName: String, lastName: String): Author
allPosts: [Post!]!
遇到这样的神秘错误,
throw (0, _error.syntaxError)(lexer.source, token.start, 'Expected ' + kind + ', found ' + (0, _lexer.getTokenDesc)(token))
很可能是架构文件中的无效语法引起的
【讨论】:
以上是关于GraphQL 架构错误的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL 架构文件应包含有效的 GraphQL 自省查询结果
在 GraphQL 架构中使用泛型对象作为输入类型时出现问题错误:架构必须包含唯一的命名类型
使用 graphql-tools 打印远程模式时出现 getDirectives 错误
importSchema GraphQL 错误:ENOENT:没有这样的文件或目录,打开“./schema.graphql”