当返回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 });