diff --git a/web/package.json b/web/package.json index a35c223..5e0563c 100644 --- a/web/package.json +++ b/web/package.json @@ -24,6 +24,7 @@ "postcss-cli": "^5.0.0", "postcss-cssnext": "^3.1.0", "postcss-import": "^11.1.0", + "raven": "^2.6.4", "slugify": "^1.2.9", "striptags": "^3.1.1" } diff --git a/web/workspace/middleware/sentry-error.js b/web/workspace/middleware/sentry-error.js new file mode 100644 index 0000000..1aeb1c8 --- /dev/null +++ b/web/workspace/middleware/sentry-error.js @@ -0,0 +1,23 @@ +const config = require('@dadi/web').Config +const Raven = require('raven') + +const Middleware = function (app) { + if (config.get('global.sentry')) { + Raven.config(`${config.get('global.sentry')}?sentry_environment=${config.get('env')}`).install() + + // Add error handler + app.use((err, req, res, next) => { + Raven.captureException(err) + next(err) + }) + + // Let this error handler run before all others + app.errors.reverse() + } +} + +module.exports = function (app) { + return new Middleware(app) +} + +module.exports.Middleware = Middleware