Custom Error Object with Apollo Server

I am trying to use a user error with apollo-server , and it seems that my user error has property ( code) which is not available from formatError.

import ExtendableError from 'es6-error'

export default class MyError extends ExtendableError {
  constructor(args) {
    let code = Object.keys(args)[0]
    let message = Object.values(args)[0]
    super(message)
    this.code = code
  }
}

My simple error handler works something like this:

let INVALIDREQUEST = 'invalid request'
let e = new MyError({INVALIDREQUEST})
console.log(e.code) // => "INVALIDREQUEST"

I'm having problems because when I register error.codefrom formatError, it is not available.

formatError: function (error) {
  console.log(error.code) // => undefined
  return error
}

How can I distribute custom properties (e.g. code) errorfrom formatError?

+4
source share
2 answers

Apollo Server GraphQL.js, , : https://github.com/graphql/graphql-js/blob/44f315d1ff72ab32b794937fd11a7f8e792fd873/src/error/GraphQLError.js#L66-L69

, GraphQL.js formatError, , GraphQL, path, positions source.

, originalError error formatError, :

formatError: function (error) {
  console.log(error.originalError.code)
  return error
}
+8

Source: https://habr.com/ru/post/1658172/


All Articles