Node.js GraphQL报错:Cannot set property 'name' of undefined 求排查
问题分析与修复方案
我帮你定位到了schema.js里的两处错误,正是它们导致了这个TypeError:
错误1:RootQuery实例化缺少new关键字
你定义RootQuery的时候直接调用了GraphQLObjectType,但它是一个类,必须用new关键字来创建实例。没有new的话,函数内部的this会是undefined,所以才会抛出"Cannot set property 'name' of undefined"的错误。
错误2:book字段的type使用了字符串而非变量
你把book字段的type写成了'BookType'(字符串),但这里需要直接引用你之前已经定义好的BookType变量,字符串不是有效的GraphQL类型定义。
修正后的RootQuery代码:
const RootQuery = new GraphQLObjectType({ name:'RootQueryType', fields: { book:{ type: BookType, // 这里改成引用变量 args: {id:{type:GraphQLString}}, resolve(parent,args) { return dummyData.find(book => book.id === args.id) } } } });
把这两处改完之后,你的Node应用应该就能正常启动了,接下来就可以在/graphql端点测试你的查询啦。
内容的提问来源于stack exchange,提问作者Boris Grunwald
相关产品推荐
相关产品推荐

