Bladeren bron

Create custom error handling.

Lee Morgan 1 jaar geleden
bovenliggende
commit
a42c1e80d7
2 gewijzigde bestanden met toevoegingen van 35 en 0 verwijderingen
  1. 32 0
      HttpError.js
  2. 3 0
      app.js

+ 32 - 0
HttpError.js

@@ -0,0 +1,32 @@
+class HttpError extends Error {
+    constructor(code, message){
+        super(message);
+        this.name = this.constructor.name;
+        this.code = code;
+        Error.captureStackTrace(this, this.constructor);
+    }
+}
+
+const catchError = (err, req, res, next)=>{
+    if(err instanceof HttpError){
+        return res.status(err.code).json({
+            error: {
+                code: err.code,
+                message: err.message
+            }
+        });
+    }
+
+    console.error(err);
+    return res.status(500).json({
+        error: {
+            code: 500,
+            message: "Internal server error"
+        }
+    });
+}
+
+export {
+    HttpError,
+    catchError
+}

+ 3 - 0
app.js

@@ -4,6 +4,8 @@ import mongoose from "mongoose";
 import cors from "cors";
 import cookieParser from "cookie-parser";
 
+import {catchError} from "./HttpError.js";
+
 const allowedOrigin = process.env.NODE_ENV === "production" ? "https://workout.leemorgan.dev" : "http://localhost:8000";
 let mongoString = "mongodb://127.0.0.1/workout";
 if(process.env.COOKIE_SECRET){
@@ -20,6 +22,7 @@ app.use(cors({
     credentials: true
 }));
 app.use(express.json());
+app.use(catchError);
 
 if(process.env.NODE_ENV !== "production"){
     app.listen(8000);