https://github.com/platzidev/redux-catch
Error catcher middleware for Redux reducers and sync middlewares
https://github.com/platzidev/redux-catch
error-catcher-middleware error-handler middleware redux-catch redux-middleware sentry
Last synced: 11 months ago
JSON representation
Error catcher middleware for Redux reducers and sync middlewares
- Host: GitHub
- URL: https://github.com/platzidev/redux-catch
- Owner: PlatziDev
- License: mit
- Created: 2016-04-13T05:41:27.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-12-10T05:17:40.000Z (about 9 years ago)
- Last Synced: 2024-05-18T18:02:19.247Z (almost 2 years ago)
- Topics: error-catcher-middleware, error-handler, middleware, redux-catch, redux-middleware, sentry
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/redux-catch
- Size: 13.7 KB
- Stars: 151
- Watchers: 4
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# redux-catch
Error catcher middleware for Redux reducers and sync middlewares.
[](https://travis-ci.org/PlatziDev/redux-catch)
[](https://github.com/sindresorhus/xo)
## API
### Apply middleware
```javascript
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.
- The error handler function could be just a `console.error` like the example above or a function to log the error in some kind of error tracking platform.
- You should use this middleware as the first middleware in the chain, so its allowed to catch all the possible errors in the application.
### Using it with [Sentry](https://www.getsentry.com/)
To use it with Sentry just download the Sentry script from npm:
```bash
npm i -S raven-js raven
```
- [raven-js](https://www.npmjs.com/package/raven-js): This is the client for browser usage.
- [raven-node](https://github.com/getsentry/raven-node): This is the client for server usage.
Now load and configure your client:
```javascript
import Raven from 'raven-js';
const sentryKey = '';
Raven
.config(`https://${sentryKey}@app.getsentry.com/`)
.install();
```
And then use `Raven.captureException` as the error handler like this:
```javascript
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.
#### Add state as extra data
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.
```javascript
function errorHandler(error, getState, action) {
Raven.context({
state: getState(),
action,
});
Raven.captureException(error);
}
```