fix: errorHandler handles internal errors and limit data

Only show data in development
This commit is contained in:
Alex Mikhalev 2018-09-02 21:49:53 -06:00
parent 69c4c1c8e1
commit 2503756c60
2 changed files with 9 additions and 4 deletions

View File

@ -22,11 +22,11 @@ export default class ApiError extends Error {
}
}
toJSON() {
toJSON(development: boolean = false) {
return {
message: this.message,
code: this.code,
data: this.data
data: development ? this.data : undefined
};
}
}

View File

@ -1,6 +1,9 @@
import * as express from "express";
import ApiError from "@common/ApiError";
import { ErrorCode } from "@common/ErrorCode";
const isDev = process.env.NODE_ENV === "development";
const errorHandler: express.ErrorRequestHandler = (
err: any,
@ -9,9 +12,11 @@ const errorHandler: express.ErrorRequestHandler = (
next: express.NextFunction
) => {
if (err instanceof ApiError) {
res.status(err.statusCode).json(err.toJSON());
// TODO: different content-type?
res.status(err.statusCode).json(err.toJSON(isDev));
} else {
next(err);
const internalError = new ApiError("An internal server error has occurred", ErrorCode.Internal);
errorHandler(internalError, req, res, next);
}
};