我有一个从execute
(graphql
包)调用的解析器,当后端需要报告错误时,它会抛出包含错误的内部类型(AuthError等){ {1}}前端依赖于相应的响应。但是,我遇到了一个问题,即code
的结果将此错误包含在execute
中,其中包含原始错误GraphQLError
,但此部分未传播到客户。
在抛出错误之后以及将结果发送到客户端之前,这是服务器端:(我正在使用套接字。)
以下是客户端:
所以,我的问题是如何在客户端错误中获得此originalError
?我假设必须有一种方法来设置客户端所具有的code
,但我在文档中没有看到任何内容。
答案 0 :(得分:0)
为了将来参考;)在下面的文章中,它解释了如何使用GraphQL的formatError函数。
https://codeburst.io/custom-errors-and-error-reporting-in-graphql-bbd398272aeb
在本文中,解决方案是针对express-graphql编码的,但其他库也有类似的方法:
import express from 'express'
import graphql from 'express-graphql'
import schema from './schema'
import Context from './Context'
const app = express()
app.use('/graphql', graphql(req => ({
schema,
context: new Context(req),
formatError(err) {
return {
message: err.message,
code: err.originalError && err.originalError.code, // <-- The trick is here
locations: err.locations,
path: err.path
}
}
})))