Browse Source

fix: errorHandler handles internal errors and limit data

Only show data in development
update-deps
Alex Mikhalev 6 years ago
parent
commit
2503756c60
  1. 4
      common/ApiError.ts
  2. 9
      server/express/errorHandler.ts

4
common/ApiError.ts

@ -22,11 +22,11 @@ export default class ApiError extends Error { @@ -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
};
}
}

9
server/express/errorHandler.ts

@ -1,6 +1,9 @@ @@ -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 = ( @@ -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);
}
};

Loading…
Cancel
Save