连接到Graphql时处理内部服务器错误

时间:2019-06-28 20:57:41

标签: reactjs graphql frontend material-ui apollo-client

这就是我设置graphQL客户端的方式。进行身份验证后,我有一个App.tsx页面可将我定向到登录页面,然后登录到“ / index”页面。如果发生错误(网络错误和GraphQL错误),它将重定向到“ /错误”页面。

App.tsx

export default () => (
  <ErrorBoundary>
    <ThemeProvider theme={theme}>
      <CssBaseline />
      <Router>
        <Security {...config}>
          <Suspense fallback={<Loading />}>
            <Switch>
              <Route path="/login" render={renderLogin} />
              <SecureRoute path="/" component={Root} />
            </Switch>
          </Suspense>
        </Security>
      </Router>
    </ThemeProvider>
  </ErrorBoundary>
);

index.tsx

 return (
    <ApolloProvider client={client}>
      <Switch>
        <Route path="/index" component={indexScreen} />
        <Route path="/error" component={ErrorPage} />
        <Redirect to="/index" />
      </Switch>
    </ApolloProvider>
  );
};

这是我设置ApolloClient的方式

export default ({ history, auth }: ApolloProps) =>
  new ApolloClient({
    uri: "/v1/graphql",
    onError: ({ networkError, graphQLErrors }) => {
      if (networkError || graphQLErrors) {
        history.push("error", "Network Error Occurred");
      } else if (graphQLErrors) {
        history.push("error", "Graphql Error Occurred");
      }
    },
    request: async operation => {
      const token = await auth.getAccessToken();
    },
  });

我应该如何处理内部服务器错误,以防服务器停机。我还在App.tsx上设置了ErrorBoundary,但它确实捕获了服务器错误。同样,在实施了将用户定向到错误页面的逻辑之后,重新渲染仍然发生,这将导致引发无限的内部服务器错误。任何帮助表示赞赏。谢谢。

0 个答案:

没有答案