【发布时间】:2018-03-05 05:00:09
【问题描述】:
我正在尝试以优雅的方式处理 Apollo 的错误。所以这个想法是每当用户遇到某种错误(500或其他任何错误)时。我只想显示一条消息,例如“出了点问题,请稍后再试”。
在组件的第一次渲染时,它工作正常(错误出现在 data.error 中)但是当我离开路由并且组件被卸载时,它会抛出。
目前我无法阻止它抛出错误。我已经尝试了该线程中的几乎所有内容:https://github.com/apollographql/react-apollo/issues/604#issuecomment-355648596
-
link-error:记录错误,但不阻止它抛出 -
hoc:记录错误,但不阻止它抛出 -
componentDidCatch: 什么都不做 -
errorPolicy:防止错误,但这意味着我也不能再处理它们了。
我总是得到以下堆栈:
Unhandled error Network error: Response not successful: Received status code 500 Error: Network error: Response not successful: Received status code 500
at new ApolloError (webpack-internal:///./node_modules/apollo-client/errors/ApolloError.js:36:28)
at eval (webpack-internal:///./node_modules/apollo-client/core/QueryManager.js:287:41)
at eval (webpack-internal:///./node_modules/apollo-client/core/QueryManager.js:668:17)
at Array.forEach (<anonymous>)
at eval (webpack-internal:///./node_modules/apollo-client/core/QueryManager.js:667:18)
at Map.forEach (<anonymous>)
at QueryManager.broadcastQueries (webpack-internal:///./node_modules/apollo-client/core/QueryManager.js:662:22)
at eval (webpack-internal:///./node_modules/apollo-client/core/QueryManager.js:236:31)
at <anonymous>
供参考: - 阿波罗客户端:2.2.5 - 反应阿波罗:2.0.4
【问题讨论】:
-
抛出错误是什么意思?你的应用会崩溃吗?
-
是的,@Locco0_0,它崩溃了!