From 1b4b98cd053770fac1f2906604ed171e2c700bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 4 May 2020 13:06:43 +0200 Subject: [PATCH] Show stack in dev --- .../src/middleware/errorHandler.ts | 18 ++++++++++++++++-- plugins/inventory-backend/package.json | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/backend-common/src/middleware/errorHandler.ts b/packages/backend-common/src/middleware/errorHandler.ts index d14c32ce16..eb1b0597a7 100644 --- a/packages/backend-common/src/middleware/errorHandler.ts +++ b/packages/backend-common/src/middleware/errorHandler.ts @@ -17,6 +17,15 @@ import { ErrorRequestHandler, NextFunction, Request, Response } from 'express'; import * as errors from '../errors'; +export type ErrorHandlerOptions = { + /** + * Whether error response bodies should show error stack traces or not. + * + * If not specified, by default shows stack traces only in development mode. + */ + showStackTraces?: boolean; +}; + /** * Express middleware to handle errors during request processing. * @@ -30,7 +39,12 @@ import * as errors from '../errors'; * * @returns An Express error request handler */ -export function errorHandler(): ErrorRequestHandler { +export function errorHandler( + options: ErrorHandlerOptions = {}, +): ErrorRequestHandler { + const showStackTraces = + options.showStackTraces ?? process.env.NODE_ENV === 'development'; + /* eslint-disable @typescript-eslint/no-unused-vars */ return ( error: Error, @@ -43,7 +57,7 @@ export function errorHandler(): ErrorRequestHandler { } const status = getStatusCode(error); - const message = error.message; + const message = showStackTraces ? error.stack : error.message; response.status(status).send(message); }; } diff --git a/plugins/inventory-backend/package.json b/plugins/inventory-backend/package.json index 86e3981147..16d510a968 100644 --- a/plugins/inventory-backend/package.json +++ b/plugins/inventory-backend/package.json @@ -5,7 +5,7 @@ "license": "Apache-2.0", "private": true, "scripts": { - "start": "tsc-watch --onFirstSuccess \"nodemon dist/run.js\"", + "start": "tsc-watch --onFirstSuccess \"cross-env NODE_ENV=development nodemon dist/run.js\"", "build": "tsc", "lint": "backstage-cli lint", "test": "backstage-cli test",