Error catcher middleware for Redux reducers and sync middlewares
Error catcher middleware for Redux reducers and sync middlewares.
import { createStore, applyMiddleware } from 'redux';
import reduxCatch from 'redux-catch';
import reducer from './reducer';
function errorHandler(error, getState, lastAction, dispatch) {
console.error(error);
console.debug('current state', getState());
console.debug('last action was', lastAction);
// optionally dispatch an action due to the error using the dispatch parameter
}
const store = createStore(reducer, applyMiddleware(
reduxCatch(errorHandler)
));
reduxCatch
receive a function to use when an error happen.console.error
like the example above or a function to log the error in some kind of error tracking platform.To use it with Sentry just download the Sentry script from npm:
npm i -S raven-js raven
Now load and configure your client:
import Raven from 'raven-js';
const sentryKey = '<key>';
Raven
.config(`https://${sentryKey}@app.getsentry.com/<project>`)
.install();
And then use Raven.captureException
as the error handler like this:
const store = createStore(reducer, applyMiddleware(
reduxCatch(error => Raven.captureException(error));
));
Now redux-catch
will start to send the errors of your reducers and middlewares to Sentry.
You can also add the state data as extra data for your errors so you can know the state at the moment of the error.
function errorHandler(error, getState, action) {
Raven.context({
state: getState(),
action,
});
Raven.captureException(error);
}