diff --git a/.changeset/good-walls-obey.md b/.changeset/good-walls-obey.md new file mode 100644 index 0000000000..b475ae8c04 --- /dev/null +++ b/.changeset/good-walls-obey.md @@ -0,0 +1,5 @@ +--- +'@urql/core': patch +--- + +Allow empty error messages when re-hydrating GraphQL errors diff --git a/packages/core/src/utils/error.test.ts b/packages/core/src/utils/error.test.ts index 386d83bcb8..d035592fe6 100644 --- a/packages/core/src/utils/error.test.ts +++ b/packages/core/src/utils/error.test.ts @@ -60,6 +60,16 @@ describe('CombinedError', () => { expect(err.graphQLErrors).toEqual(graphQLErrors); }); + it('accepts empty string errors for graphQLError', () => { + const graphQLErrors = [new Error('')]; + + const err = new CombinedError({ graphQLErrors }); + + expect(err.message).toBe('[GraphQL] '); + + expect(err.graphQLErrors).toEqual(graphQLErrors); + }); + it('accepts a response that is attached to the resulting error', () => { const response = {}; const err = new CombinedError({ diff --git a/packages/core/src/utils/error.ts b/packages/core/src/utils/error.ts index 0d8bcc85d0..eeae84df6e 100644 --- a/packages/core/src/utils/error.ts +++ b/packages/core/src/utils/error.ts @@ -19,11 +19,11 @@ const generateErrorMessage = ( const rehydrateGraphQlError = (error: any): GraphQLError => { if ( error && - error.message && + typeof error.message === 'string' && (error.extensions || error.name === 'GraphQLError') ) { return error; - } else if (typeof error === 'object' && error.message) { + } else if (typeof error === 'object' && typeof error.message === 'string') { return new GraphQLError( error.message, error.nodes,