From 66a166a34f153658578952bd8174cdd7a7c9698a Mon Sep 17 00:00:00 2001
From: Louis-Marie Michelin <lmichelin@outlook.fr>
Date: Tue, 8 Jun 2021 16:35:25 +0200
Subject: [PATCH] fix: express error handling

---
 backend/server.js                    | 2 +-
 backend/services/jsonErrorHandler.js | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/backend/server.js b/backend/server.js
index db6ddb0..ded15b9 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -19,11 +19,11 @@ app.use(logger("dev"));
 app.use(cors());
 app.use(express.json());
 app.use(express.urlencoded({ extended: false }));
-app.use(jsonErrorHandler);
 
 app.use("/", indexRouter);
 app.use("/users", usersRouter);
 app.use(routeNotFoundJsonHandler);
+app.use(jsonErrorHandler);
 
 const port = parseInt(process.env.PORT || "3000");
 
diff --git a/backend/services/jsonErrorHandler.js b/backend/services/jsonErrorHandler.js
index 31652c2..0a379a2 100644
--- a/backend/services/jsonErrorHandler.js
+++ b/backend/services/jsonErrorHandler.js
@@ -3,6 +3,9 @@
 // that needs to have four arguments as opposed to a regular middleware.
 // eslint-disable-next-line no-unused-vars
 const jsonErrorHandler = function (error, req, res, next) {
+  console.error(error);
+  if (res.headersSent) return next(error);
+
   if (process.env.NODE_ENV === "development") {
     return res.status(500).json({
       message: error.toString(),
-- 
GitLab