/graphql-errors

Better error handling for GraphQL

Primary LanguageJavaScriptMIT LicenseMIT

GraphQL Errors

When an error occurs when processing GraphQL queries, graphql-js sends the complete error message to the client with the response. In most cases, sending error messages to the client without supervision is not recommended. The graphql-errors module fixes this issue by masking error messages sent to the client. This module intercepts GraphQL error messages extended from Error and replaces them with "internal error". Error messages extended from UserError are sent as written,

var express = require('express');
var graphql = require('graphql');
var graphqlHTTP = require('express-graphql');
var maskErrors = require('graphql-errors').maskErrors;

var schema = new graphql.GraphQLSchema({
  query: new graphql.GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
      test: {
        type: graphql.GraphQLString,
        resolve() {
          throw new Error('secret error message');
        },
      test: {
        type: graphql.GraphQLString,
        resolve() {
          throw new UserError('not secret error message');
        },
      },
    },
  }),
});

// mask error messages
maskErrors(schema);

var app = express();
app.use('/', graphqlHTTP({schema: schema}));
app.listen(3000);

To make error debugging easier, it logs the error on the server with the stack. The module can be activated on a schema using its processSchema function.