aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src/middleware/error.middleware.js
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/middleware/error.middleware.js')
-rw-r--r--backend/src/middleware/error.middleware.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/backend/src/middleware/error.middleware.js b/backend/src/middleware/error.middleware.js
new file mode 100644
index 0000000..e037cff
--- /dev/null
+++ b/backend/src/middleware/error.middleware.js
@@ -0,0 +1,40 @@
+const env = require('../config/env');
+
+/**
+ * Not found error handler middleware
+ * @param {Object} req - Express request object
+ * @param {Object} res - Express response object
+ * @param {Function} next - Express next function
+ */
+const notFound = (req, res, next) => {
+ const error = new Error(`Not Found - ${req.originalUrl}`);
+ res.status(404);
+ next(error);
+};
+
+/**
+ * General error handler middleware
+ * @param {Error} err - Error object
+ * @param {Object} req - Express request object
+ * @param {Object} res - Express response object
+ * @param {Function} next - Express next function
+ */
+const errorHandler = (err, req, res, next) => {
+ // Log the error
+ console.error(err.stack);
+
+ // Set status code
+ const statusCode = res.statusCode === 200 ? 500 : res.statusCode;
+
+ // Send response
+ res.status(statusCode).json({
+ message: err.message,
+ stack: env.NODE_ENV === 'production' ? '🥞' : err.stack,
+ error: env.NODE_ENV === 'development' ? err : {}
+ });
+};
+
+module.exports = {
+ notFound,
+ errorHandler
+}; \ No newline at end of file