如果由于在Redux可观察的史诗中发出动作而导致js错误发生,则它将停止所有史诗监听新动作。这很讨厌,因为在前端,它仍然看起来好像该应用程序正在运行,但是在后台却什么也没有保存。
我试图在我的史诗中捕获错误,但是由于某种原因,它没有捕获到由发出的动作引起的错误(请参见此处的示例:https://stackblitz.com/edit/redux-observable-playground-qtughj?file=ping-pong.js)
我认为升级到redux-observable版本1.0.0可以解决此问题,但不幸的是它仍然存在。
有什么方法可以捕获由redux可观察到的发出的动作引起的错误?
问题与this question不同,因为错误是在史诗发出它的输出redux动作后在reducer中触发的,因此在可观察变量链中用.error
捕获它不会工作(请参见example above进行演示)。
谢谢!
答案 0 :(得分:0)
在redux-observable Github repo中讨论了此问题之后,最安全的解决方案似乎是创建一些自定义Redux中间件,以阻止错误一直冒泡回到根史诗,例如
const store = createStore(rootReducer,
applyMiddleware(epicMiddleware, store => next => action => {
try {
next(action);
} catch (e) {
setTimeout(() => {
throw e;
});
}
})
);