mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-19 19:16:29 +08:00
fix(server): handle graphql bad input error (#10854)
This commit is contained in:
@@ -13,6 +13,7 @@ import { GraphQLError } from 'graphql';
|
||||
|
||||
import { Config } from '../config';
|
||||
import { UserFriendlyError } from '../error';
|
||||
import { isGraphQLBadRequest, mapAnyError } from '../nestjs/exception';
|
||||
import { GQLLoggerPlugin } from './logger-plugin';
|
||||
|
||||
export type GraphqlContext = {
|
||||
@@ -65,6 +66,15 @@ export type GraphqlContext = {
|
||||
formattedError.extensions = error.originalError.toJSON();
|
||||
formattedError.extensions.stacktrace = error.originalError.stack;
|
||||
return formattedError;
|
||||
} else if (
|
||||
error instanceof GraphQLError &&
|
||||
isGraphQLBadRequest(error)
|
||||
) {
|
||||
const err = mapAnyError(error);
|
||||
// @ts-expect-error allow assign
|
||||
formattedError.extensions = err.toJSON();
|
||||
formattedError.extensions.stacktrace = err.stack;
|
||||
return formattedError;
|
||||
} else {
|
||||
// @ts-expect-error allow assign
|
||||
formattedError.message = 'Internal Server Error';
|
||||
|
||||
@@ -26,7 +26,7 @@ import {
|
||||
import { metrics } from '../metrics';
|
||||
import { getRequestIdFromHost } from '../utils';
|
||||
|
||||
function isGraphQLBadRequest(error: any): error is GraphQLError {
|
||||
export function isGraphQLBadRequest(error: GraphQLError) {
|
||||
// https://www.apollographql.com/docs/apollo-server/data/errors
|
||||
const code = error.extensions?.code;
|
||||
return (
|
||||
@@ -39,14 +39,13 @@ function isGraphQLBadRequest(error: any): error is GraphQLError {
|
||||
|
||||
export function mapAnyError(error: any): UserFriendlyError {
|
||||
if (error instanceof GraphQLError) {
|
||||
const err = error;
|
||||
if (isGraphQLBadRequest(error)) {
|
||||
return new GraphqlBadRequest({
|
||||
code: err.extensions.code as string,
|
||||
message: err.message,
|
||||
code: error.extensions.code as string,
|
||||
message: error.message,
|
||||
});
|
||||
}
|
||||
error = err.originalError ?? error;
|
||||
error = error.originalError ?? error;
|
||||
}
|
||||
if (error instanceof UserFriendlyError) {
|
||||
return error;
|
||||
|
||||
Reference in New Issue
Block a user