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

express-graphql的resolver中context始终为undefined如何解决

问题原因

你遇到的问题是resolver参数顺序不符合GraphQL官方规范导致的。
所有GraphQL resolver的参数固定为4个,顺序不可调整:

  • 第1位:parent,父级resolver的返回值,顶级查询场景下为根对象/空值
  • 第2位:args,当前请求传入的字段参数,也就是你原本以为会在第一位拿到的值
  • 第3位:context,你在graphqlHTTP配置中定义的上下文对象
  • 第4位:info,当前查询的执行元信息,包含查询AST、schema结构等内容

你的代码中将args放在了参数第一位,所以实际拿到的第一个值是parent,第二个值才是请求参数,第三个位置对应context,自然会出现context、第三个参数为undefined的现象。

修复方法

调整resolver的参数顺序即可,示例代码如下:

// 完整参数写法
const resolver = async (parent, args, context, info) => {
  console.log(context, info);
  const { email, password } = args;
  // 原有业务逻辑
};

// 不需要的参数可以用占位符省略
const resolver = async (_, args, context) => {
  console.log(context);
  const { email, password } = args;
  // 原有业务逻辑
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:09