GraphQL,react-apollo,Apollo 1,全局处理200个HTTP代码状态的data.error错误。不是网络。

时间:2017-12-21 23:35:14

标签: reactjs graphql apollo react-apollo apollo-client

预期结果:

全球抓取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 个答案:

答案 0 :(得分:0)

据我所知,apollo-client< 2.0。但是,在2.0中,您可以使用apollo-link-error分别对网络错误和graphql错误做出反应。在文档here中了解更多信息。