mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 10:55:37 +00:00
fix graphql error handling
This commit is contained in:
parent
ec07719f3b
commit
37500df27c
@ -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",
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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".',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user