You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用graphql-yoga查询users时遇TypeError错误求助

解决graphql-yoga查询users时的TypeError问题

核心排查方向:Context注入与Resolver使用

1. 确认Yoga实例的Context配置是否正确

创建Yoga实例时,必须将你的JSON数据挂载到context对象中,确保resolver能访问到:

import { createYoga } from 'graphql-yoga'
import { createServer } from 'http'
import usersData from './myJsonFile.json'
import schema from './schema.js'

const yoga = createYoga({
  schema,
  // 配置context,将JSON数据挂载到users属性上
  context: () => ({
    users: usersData
  })
})

const server = createServer(yoga)
server.listen(4000, () => console.log('Server running on http://localhost:4000/graphql'))

如果使用CommonJS规范,导入方式改为const usersData = require('./myJsonFile.json')。

2. 检查Resolver中Context的调用是否正确

在query.js的users resolver里,要正确从context参数获取数据,避免拼写错误或参数顺序错误:

// query.js
export default {
  users: (parent, args, context) => {
    // 临时打印context验证是否存在users属性
    console.log('当前Context:', context)
    return context.users
  }
}

注意resolver的参数顺序是parent, args, context(第四个参数为info),不要搞混顺序导致context未正确获取。

3. 验证Resolver的组合是否正确

确保resolvers/index.js正确导出组合后的resolvers对象:

// resolvers/index.js
import Query from './query.js'

export default {
  Query
}

这里要注意Query的大小写必须和schema中定义的根查询类型一致(schema里是type Query { ... },所以resolvers里必须是大写的Query)。

4. 确认JSON数据的结构符合预期

虽然你已经确认JSON能正常打印,但要确保数据结构匹配resolver的返回要求:如果JSON是{ "users": [...] }格式,那挂载到context时应该写users: usersData.users,而非直接users: usersData。

内容的提问来源于stack exchange,提问作者mertokumusoglu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:10:02