当返回graphql错误时,如何捕获Relayoberable未处理的错误?

当返回graphql错误时,如何捕获Relayoberable未处理的错误?,graphql,relay,relaymodern,Graphql,Relay,Relaymodern,我的后端正在返回以下响应: const errorMessage = { errors: [ { message: 'User is logged out', }, ], data: null, }; return res.status(200).json(errorMessage); 我的react native app using relay返回以下错误: RelayObservable: Unhandled Error Error: Relay

我的后端正在返回以下响应:

const errorMessage = {
  errors: [
    {
      message: 'User is logged out',
    },
  ],
  data: null,
};
return res.status(200).json(errorMessage);
我的react native app using relay返回以下错误:

RelayObservable: Unhandled Error Error: 
Relay request for `HomeQuery` failed by the following reasons:
当我尝试查询后端时会出现此错误,它返回上面的“errorMessage”graphql errors数组。在中继网络层抛出红屏之前,我无法捕捉到这个错误。我的中继环境如下所示:

const network = new RelayNetworkLayer([
  urlMiddleware({
    url: () => Promise.resolve(`${config.endpoint}backend`),
    headers: async () => authenticateHeaders(fetchHeaders),
  }),
  retryMiddleware({ fetchTimeout: 1000 }),
  next => req => {
    if (!req.uploadbles) {
      req.Accept = 'application/json';
      req['Content-Type'] = 'application/json';
    }

    return next(req);
  },
  next => async req => {
    const res = await next(req);
    if (isLoggedOut(res)) {
      // Using react-navigation, route to the login screen
      dispatch(routeToLogin())
      // I also tried returning `dispatch(routeToLogin())` and `{ data: null, errors: res.payload.errors }` without luck
    }

    return res;
  }
  ]);
当返回graphql错误时,是否有一种方法可以使用dispatchrouteToLogin导航而不看到红屏错误

编辑1 对于react relay network modern:您可以像这样添加noThrow选项:new RelayNetworkLayerMiddleware,{noThrow:true}

react relay network layer relay classic不存在noThrow选项,我可以做些什么来解决它吗?

请尝试noThrow选项:


您确定react中继网络层包上没有可用的行吗?我添加了它,错误仍然存在。我还尝试在代码中搜索“noThrow”,但它不存在。记住,这不是现代的软件包,而是经典的软件包。我确认这解决了react relay network modern的问题✅但是,react中继网络层`包仍然抛出错误。
const network = new RelayNetworkLayer(middlewares, { noThrow: true });