diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5a9de08 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +# Upgrading from v1.x to v2.x + +## Breaking Changes: + +### [2.0.0]- 2020-7-28 + +* Removes `crashProtector` middleware which was using the [Node.js Domain api](https://nodejs.org/api/domain.html) which has been deprecated. + +[2.0.0]:https://github.com/shutterstock/node-common-errors/compare/v1.1.0...v2.0.0 diff --git a/README.md b/README.md index a66438f..9f49c48 100644 --- a/README.md +++ b/README.md @@ -891,7 +891,7 @@ throw new ArgumentNullError("username"); ### Crash Protector -Express middleware for preventing the web server from crashing when an error is thrown from an asynchronous context. +Express middleware for preventing the web server from crashing when an error is thrown from an asynchronous context. Any error that would have caused a crash is logged to *stderr*. ```js @@ -900,7 +900,6 @@ var app = express(); app.use(express.static(__dirname + '/../public')); app.use(express.bodyParser()); -app.use(errors.middleware.crashProtector()); //insert new middleware here @@ -924,7 +923,6 @@ var app = express(); app.use(express.static(__dirname + '/../public')); app.use(express.bodyParser()); -app.use(errors.middleware.crashProtector()); //insert new middleware here diff --git a/index.js b/index.js index 1bacb2d..933f874 100644 --- a/index.js +++ b/index.js @@ -5,7 +5,6 @@ var exports = module.exports = { }, middleware: { errorHandler: require('./lib/middleware/errorHandler'), - crashProtector: require('./lib/middleware/crashProtector') } }; diff --git a/lib/middleware/crashProtector.js b/lib/middleware/crashProtector.js deleted file mode 100644 index 39725bf..0000000 --- a/lib/middleware/crashProtector.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = function (errorHandler){ - return function crashProtector(req, res, next) { - var domain = require('domain'); //require only if needed, because "Due to their experimental nature, the Domains features are disabled unless the domain module is loaded at least once." - var d = domain.create(); - d.on('error', function(err){ - console.error("Fatal crash protected!"); - d.dispose(); - if(res.finished || Object.keys(res._headers).length) { - console.error(err && err.stack); - return res.end(); - } - if(errorHandler) errorHandler(err, req, res); - else next(err); - }); - d.run(next); - } -} - -var findErrorHandler = function(app){ - try { - var errorHandler; - var foundRouter = false; - for(var i=0; i= 4) { - errorHandler = middleware; - break; - } else if(app.router === middleware.handle) foundRouter = true; - } - return errorHandler; - } catch(e) { - console.error("Crash protector error", e); - } -} \ No newline at end of file