阿波罗服务器在一个干净的人体模型中显示错误



我确信这个问题不言自明。我正在使用"apollo服务器核心"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-错误

您可以创建这样的自定义错误:

import { ApolloError } from 'apollo-server-errors';
throw new ApolloError('My error message', 'MY_ERROR_CODE', myCustomExtensions);

最新更新