Estoy bastante seguro de que la pregunta se explica por sí misma. Estoy usando 'apollo-server-core' 3.6.5
Errores que quiero obtener
{ "errors": [ { "message": "Syntax Error: Unexpected <EOF>.", "locations": [ { "line": 1, "column": 1 } ] } ] }Errores que recibo
{ "errors": [ { "message": "GraphQL operations must contain a non-empty `query` or a `persistedQuery` extension.", "extensions": { "code": "INTERNAL_SERVER_ERROR", "exception": { "stacktrace": [ "GraphQLError: GraphQL operations must contain a non-empty `query` or a `persistedQuery` extension.", " at processGraphQLRequest (C:\\Users\\XXXX\\Documents\\Github\\XXXX-XXX\\node_modules\\apollo-server-core\\src\\requestPipeline.ts:204:7)", " at processTicksAndRejections (node:internal/process/task_queues:96:5)", " at async processHTTPRequest (C:\\Users\\XXXX\\Documents\\Github\\XXXX-XXXX\\node_modules\\apollo-server-core\\src\\runHttpQuery.ts:346:24)" ] } } } ] }Mi pensamiento inicial fue analizar el error en un objeto y mapear cualquier indeseable como ese
const msg = JSON.parse(error.message).errors.map((err:any) => err = {message: err.message});Pero esa dosis no funciona, ya que no le dice dónde ocurrió el error + parece innecesario usar JSON. parse y luego volver a codificarlo.
Los documentos de Apollo cubren el manejo de errores. https://www.apollographql.com/docs/apollo-server/data/errors/#throwing-errors
Puede crear un error personalizado como este:
import { ApolloError } from 'apollo-server-errors'; throw new ApolloError('My error message', 'MY_ERROR_CODE', myCustomExtensions);