GraphQL、react-apollo、Apollo 1,全局处理 200 HTTP 代码状态的 data.error 错误。不是网络一。
Posted
技术标签:
【中文标题】GraphQL、react-apollo、Apollo 1,全局处理 200 HTTP 代码状态的 data.error 错误。不是网络一。【英文标题】:GraphQL, react-apollo, Apollo 1, globally handle data.error errors with 200 HTTP code status. Not the network one. 【发布时间】:2018-06-04 16:09:12 【问题描述】:预期结果:
全局捕获data.error
,就像react-apollo
告诉我这样:
Unhandled (in react-apollo) Error: GraphQL error: Not authorized for Query.myQuery
at new ApolloError (http://localhost:4000/static/js/bundle.js:3637:28)
at ObservableQuery../node_modules/apollo-client/core/ObservableQuery.js.ObservableQuery.currentResult (http://localhost:4000/static/js/bundle.js:1219:25)
at GraphQL.dataForChild (http://localhost:4000/static/js/bundle.js:41273:62)
at GraphQL.render (http://localhost:4000/static/js/bundle.js:41323:33)
at finishClassComponent (http://localhost:4000/static/js/bundle.js:50012:31)
...
实际结果:
其实我可以用这个来处理全局错误:
networkInterface.useAfter([
applyAfterware( response , next)
console.log("response useAfter():", response);
next();
]);
但这对网络错误有好处,而不是始终为 200 HTTP 代码状态的 GraphQL 错误(如授权错误)。
版本 - apollo-client@1.9.x - react-apollo@1.4.16
【问题讨论】:
【参考方案1】:据我所知,apollo-client
apollo-link-error 分别对网络错误和 graphql 错误做出反应。在文档here 中了解更多信息。
【讨论】:
以上是关于GraphQL、react-apollo、Apollo 1,全局处理 200 HTTP 代码状态的 data.error 错误。不是网络一。的主要内容,如果未能解决你的问题,请参考以下文章
使用 Express-GraphQL 和 React-Apollo 订阅 GraphQL
react-apollo 没有连接到我的 graphql 本地服务器
如何使用 React-Apollo 处理 GraphQL 错误?