Apollo-Server 以干净的方式显示错误
Apollo-Server display errors in a clean mannor
我很确定这个问题是不言自明的。
我正在使用 'apollo-server-core' 3.6.5
我想得到的错误
{
"errors": [
{
"message": "Syntax Error: Unexpected <EOF>.",
"locations": [
{
"line": 1,
"column": 1
}
]
}
]
}
我遇到的错误
{
"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)"
]
}
}
}
]
}
我最初的想法是将错误解析为一个对象,并像这样映射出任何不需要的东西
const msg = JSON.parse(error.message).errors.map((err:any) => err = {message: err.message});
但是那是行不通的,因为它没有告诉您错误发生的位置 + 似乎没有必要使用 JSON.parse 然后将其字符串化。
apollo 文档涵盖了错误处理。
https://www.apollographql.com/docs/apollo-server/data/errors/#throwing-errors
您可以像这样创建自定义错误:
import { ApolloError } from 'apollo-server-errors';
throw new ApolloError('My error message', 'MY_ERROR_CODE', myCustomExtensions);
我很确定这个问题是不言自明的。 我正在使用 'apollo-server-core' 3.6.5
我想得到的错误
{
"errors": [
{
"message": "Syntax Error: Unexpected <EOF>.",
"locations": [
{
"line": 1,
"column": 1
}
]
}
]
}
我遇到的错误
{
"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)"
]
}
}
}
]
}
我最初的想法是将错误解析为一个对象,并像这样映射出任何不需要的东西
const msg = JSON.parse(error.message).errors.map((err:any) => err = {message: err.message});
但是那是行不通的,因为它没有告诉您错误发生的位置 + 似乎没有必要使用 JSON.parse 然后将其字符串化。
apollo 文档涵盖了错误处理。 https://www.apollographql.com/docs/apollo-server/data/errors/#throwing-errors
您可以像这样创建自定义错误:
import { ApolloError } from 'apollo-server-errors';
throw new ApolloError('My error message', 'MY_ERROR_CODE', myCustomExtensions);