gatsbyjs/gatsby · error

GraphQL Resolver ${resolverName}got called without "info" ar

Error message

GraphQL Resolver ${resolverName}got called without "info" argument. This might cause unexpected errors.

It's likely that this has happened in a schemaCustomization with manually invoked resolver. If manually invoking resolvers, it's best to invoke them as follows:

  resolve(parent, args, context, info)

What it means

Error "GraphQL Resolver ${resolverName}got called without "info" argument. This might cause unexpected errors. It's likely that this has happened in a schemaCustomization with manually invoked resolver. If manually invoking resolvers, it's best to invoke them as follows: resolve(parent, args, context, info) " thrown in gatsbyjs/gatsby.

Source

Thrown at packages/gatsby/src/schema/resolvers.ts:730

  resolver: GatsbyResolver<TSource, TArgs>
): GatsbyResolver<TSource, TArgs> {
  // Note: we explicitly make an attempt to prevent using the `async` keyword because often
  //       it does not return a promise and this makes a significant difference at scale.
  //       GraphQL will gracefully handle the resolver result of a promise or non-promise.

  if (resolver[`isTracingResolver`]) {
    return resolver
  }

  const wrappedTracingResolver = function wrappedTracingResolver(
    parent,
    args,
    context,
    info
  ): Promise<any> {
    if (!WARNED_ABOUT_RESOLVERS) {
      if (!info) {
        reporter.warn(badResolverInvocationMessage(`info`))
        WARNED_ABOUT_RESOLVERS = true
      } else if (!context) {
        reporter.warn(badResolverInvocationMessage(`context`, info.path))
        WARNED_ABOUT_RESOLVERS = true
      }
    }

    let activity
    let time
    if (context?.tracer) {
      activity = context.tracer.createResolverActivity(
        info.path,
        `${info.parentType.name}.${info.fieldName}`
      )
      activity.start()
    }
    if (context?.telemetryResolverTimings) {
      time = process.hrtime.bigint()

View on GitHub (pinned to e85d62f177)

Solutions

  1. When manually invoking resolvers in schemaCustomization, pass all four arguments: resolve(parent, args, context, info)
  2. Use gatsby's wrappedResolveWithContext / wrapResolvers helpers instead of calling resolvers directly
  3. Guard manual resolver calls in custom code so info is always supplied
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/gatsby/src/schema/resolvers.ts:730 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of gatsbyjs/gatsby@e85d62f177 (2026-08-26). Data as JSON: /api/errors/b1d9fae8c76e6406. Report an issue: GitHub.