fix graphql error handling

This commit is contained in:
Pierre Noël 2021-11-02 12:08:15 +01:00
parent ec07719f3b
commit 37500df27c
4 changed files with 11 additions and 14 deletions

View File

@ -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",

View File

@ -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;

View File

@ -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".',
},
],
});

View File

@ -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"