Skip to content

Provide a method to get GraphQLError as Js.Exn.t #257

Description

@Kingdutch

Since the GraphQLError extends JavaScripts Error class anywhere that we can use a JavaScript error (typed in ReScript as Js.Exn.t) we can also use a GraphQLError.

Error reporting code that accepts a Js.Exn.t can't directly accept a GraphQLError. Adding an asJsExn method to GraphQLError.res could simplify code that deals with errors :) external asJsExn : t => Js.Exn.t = "%identity" should probably do the trick :D (this only holds from GraphQLError -> Error)

Activity

  1. parkerziegler commented on Apr 5, 2021

    @parkerziegler
    Contributor

    This makes sense to me @Kingdutch! The only other question I have for your use case is whether or not accessing originalError off of the GraphQLError is good enough for this use case. We do provide a binding to that already, so you should always be able to access originalError off of a GraphQLError — though it is an option type, so its presence isn't guaranteed even if an error is encountered.

    All that being said, I could see this being useful. I'd be happy to accept a PR if you want to include what you have above on the binding for GraphQLError.

  2. Kingdutch commented on Dec 15, 2021

    @Kingdutch
    ContributorAuthor

    Hi @parkerziegler I realised I never got back to this.

    I think the fact that originalError can be undefined would make it not enough (since sometimes we have a GraphQLError but then couldn't log the originalError). Additionally I think for logging purposes (which is mostly why I requested this) the extra information about where in the GraphQL schema the error occurred can be very useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions