From 3f96a128a0382477e16cb84b4d565dcf69a32f47 Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Mon, 25 Mar 2019 13:27:33 +0800 Subject: [PATCH] packages/server: Return API errors as JSON --- packages/server/src/middleware/ErrorApiHandler.ts | 2 +- packages/server/src/validator/ValidationError.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/server/src/middleware/ErrorApiHandler.ts b/packages/server/src/middleware/ErrorApiHandler.ts index 275e14c..dc8a14d 100644 --- a/packages/server/src/middleware/ErrorApiHandler.ts +++ b/packages/server/src/middleware/ErrorApiHandler.ts @@ -11,7 +11,7 @@ export class ErrorApiHandler implements IMiddleware { req.correlationId, err.stack) const statusCode = this.getStatus(err) res.status(statusCode) - if (err instanceof ValidationError) { + if (ValidationError.isInstanceOf(err)) { res.json({ error: err.message, errors: err.errors, diff --git a/packages/server/src/validator/ValidationError.ts b/packages/server/src/validator/ValidationError.ts index d310f55..debf4be 100644 --- a/packages/server/src/validator/ValidationError.ts +++ b/packages/server/src/validator/ValidationError.ts @@ -15,4 +15,10 @@ export class ValidationError extends Error { this.name = 'ValidationError' Error.captureStackTrace(this) } + + static isInstanceOf(err: any): err is ValidationError { + return typeof err.status === 'number' + && typeof err.message === 'string' + && Array.isArray(err.errors) + } }