diff --git a/packages/plugins/graphql/package.json b/packages/plugins/graphql/package.json index 3828b094db..16d406fef3 100644 --- a/packages/plugins/graphql/package.json +++ b/packages/plugins/graphql/package.json @@ -17,7 +17,6 @@ "@graphql-tools/utils": "^8.0.2", "@strapi/utils": "3.6.8", "apollo-server-core": "3.1.2", - "apollo-server-errors": "3.2.0", "apollo-server-koa": "3.1.2", "glob": "^7.1.7", "graphql": "15.5.1", diff --git a/packages/plugins/graphql/server/format-graphql-error.js b/packages/plugins/graphql/server/format-graphql-error.js index 1f7dba16f9..faa4af8c7a 100644 --- a/packages/plugins/graphql/server/format-graphql-error.js +++ b/packages/plugins/graphql/server/format-graphql-error.js @@ -1,6 +1,6 @@ 'use strict'; -const { toUpper, snakeCase, pick } = require('lodash/fp'); +const { toUpper, snakeCase, pick, isEmpty } = require('lodash/fp'); const { HttpError, ForbiddenError, @@ -12,15 +12,16 @@ const { ApolloError, UserInputError: ApolloUserInputError, ForbiddenError: ApolloForbiddenError, -} = require('apollo-server-errors'); +} = require('apollo-server-koa'); +const { GraphQLError } = require('graphql'); const formatToCode = name => `STRAPI_${toUpper(snakeCase(name))}`; const formatErrorToExtension = error => ({ error: pick(['name', 'message', 'details'])(error) }); const formatGraphqlError = error => { - const originalError = error.originalError; + const { originalError } = error; - if (originalError instanceof ApolloError) { + if (isEmpty(originalError)) { return error; } @@ -37,10 +38,13 @@ const formatGraphqlError = error => { return new ApolloError(originalError.message, name, formatErrorToExtension(originalError)); } + if (originalError instanceof ApolloError || originalError instanceof GraphQLError) { + return error; + } + // Internal server error - strapi.log.error(error); - error.message = 'An error occured'; - return error; + strapi.log.error(originalError); + return ApolloError('Internal Server Error', 'INTERNAL_SERVER_ERROR'); }; module.exports = formatGraphqlError; diff --git a/packages/plugins/graphql/tests/graphql-relations.test.e2e.js b/packages/plugins/graphql/tests/graphql-relations.test.e2e.js index 839ee9c7af..51047fc89a 100644 --- a/packages/plugins/graphql/tests/graphql-relations.test.e2e.js +++ b/packages/plugins/graphql/tests/graphql-relations.test.e2e.js @@ -690,7 +690,6 @@ describe('Test Graphql Relations API End to End', () => { errors: [ { message: 'Cannot query field "privateName" on type "Person".', - // message: 'Cannot query field "people" on type "Query".', }, ], }); diff --git a/yarn.lock b/yarn.lock index 2f5ee933aa..57ef4ba77c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6480,11 +6480,6 @@ apollo-server-env@^4.0.3: dependencies: node-fetch "^2.6.1" -apollo-server-errors@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.2.0.tgz#6c5051107b073c09bb55c2554878af0e97d59d08" - integrity sha512-Y7YH3JVAaR1199ao4dae3j1UrF9D/6AJwHpsORTjI3BvrwjU1X7Nk1VvEHn9bZfZF6ONaqUM+uCLm5c8GPhffQ== - apollo-server-errors@^3.0.1, apollo-server-errors@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.1.0.tgz#0b890dc7ae36a1f0ca4841d353e8d1c3c6524ee2"