A GraphQLError describes an Error found during the parse, validate, or execute phases of performing a GraphQL operation. In addition to a message and stack trace, it also includes information about the locations in a GraphQL document and/or execution result that correspond to the Error.

Hierarchy

  • Error
    • GraphQLError

Constructors

Properties

cause?: unknown
extensions: {
    [key: string]: any;
}

Extension fields to add to the formatted error.

Type declaration

  • [key: string]: any
locations: undefined | readonly SourceLocation[]

An array of { line, column } locations within the source GraphQL document which correspond to this error.

Errors during validation often contain multiple locations, for example to point out two things with the same name. Errors during execution include a single location, the field which produced the error.

Enumerable, and appears in the result of JSON.stringify().

message: string
name: string
nodes: undefined | readonly ASTNode[]

An array of GraphQL AST Nodes corresponding to this error.

originalError: undefined | null | Error

The original error thrown from a field resolver during execution.

path: undefined | readonly (string | number)[]

An array describing the JSON-path into the execution response which corresponds to this error. Only included for errors during execution.

Enumerable, and appears in the result of JSON.stringify().

positions: undefined | readonly number[]

An array of character offsets within the source GraphQL document which correspond to this error.

source: undefined | Source

The source GraphQL document corresponding to this error.

Note that if this Error represents more than one node, the source may not represent nodes after the first node.

stack?: string
stackTraceLimit: number

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

Methods

  • Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

    const myObject = {};
    Error.captureStackTrace(myObject);
    myObject.stack; // Similar to `new Error().stack`

    The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

    The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

    The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

    function a() {
    b();
    }

    function b() {
    c();
    }

    function c() {
    // Create an error without stack trace to avoid calculating the stack trace twice.
    const { stackTraceLimit } = Error;
    Error.stackTraceLimit = 0;
    const error = new Error();
    Error.stackTraceLimit = stackTraceLimit;

    // Capture the stack trace above function b
    Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
    throw error;
    }

    a();

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void