feat: add flag for default error handler
Signed-off-by: Radoslaw Wielonski <radoslaw.wielonski@nordcloud.com>
This commit is contained in:
@@ -40,11 +40,12 @@ describe('ServiceBuilderImpl', () => {
|
||||
const serviceBuilder = new ServiceBuilderImpl(module);
|
||||
const customErrorHandler = (
|
||||
error: Error,
|
||||
// @ts-ignore
|
||||
req: Request,
|
||||
// @ts-ignore
|
||||
res: Response,
|
||||
next: NextFunction,
|
||||
) => {
|
||||
console.log(req, res);
|
||||
next(error);
|
||||
};
|
||||
serviceBuilder.setErrorHandler(customErrorHandler);
|
||||
|
||||
@@ -67,6 +67,7 @@ export class ServiceBuilderImpl implements ServiceBuilder {
|
||||
private routers: [string, Router][];
|
||||
private requestLoggingHandler: RequestLoggingHandlerFactory | undefined;
|
||||
private errorHandler: ErrorRequestHandler | undefined;
|
||||
private useDefaultErrorHandler: boolean;
|
||||
// Reference to the module where builder is created - needed for hot module
|
||||
// reloading
|
||||
private module: NodeModule;
|
||||
@@ -74,6 +75,7 @@ export class ServiceBuilderImpl implements ServiceBuilder {
|
||||
constructor(moduleRef: NodeModule) {
|
||||
this.routers = [];
|
||||
this.module = moduleRef;
|
||||
this.useDefaultErrorHandler = true;
|
||||
}
|
||||
|
||||
loadConfig(config: Config): ServiceBuilder {
|
||||
@@ -158,6 +160,11 @@ export class ServiceBuilderImpl implements ServiceBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
disableDefaultErrorHandler() {
|
||||
this.useDefaultErrorHandler = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
async start(): Promise<http.Server> {
|
||||
const app = express();
|
||||
const { port, host, logger, corsOptions, httpsSettings, helmetOptions } =
|
||||
@@ -175,7 +182,14 @@ export class ServiceBuilderImpl implements ServiceBuilder {
|
||||
app.use(root, route);
|
||||
}
|
||||
app.use(notFoundHandler());
|
||||
app.use(this.errorHandler ?? defaultErrorHandler());
|
||||
|
||||
if (this.errorHandler) {
|
||||
app.use(this.errorHandler);
|
||||
}
|
||||
|
||||
if (this.useDefaultErrorHandler) {
|
||||
app.use(defaultErrorHandler());
|
||||
}
|
||||
|
||||
const server: http.Server = httpsSettings
|
||||
? await createHttpsServer(app, httpsSettings, logger)
|
||||
|
||||
@@ -107,6 +107,13 @@ export type ServiceBuilder = {
|
||||
*/
|
||||
setErrorHandler(errorHandler: ErrorRequestHandler): ServiceBuilder;
|
||||
|
||||
/**
|
||||
* Disable default error handler
|
||||
*
|
||||
* If it's not called, default error handler is used
|
||||
*/
|
||||
disableDefaultErrorHandler(): ServiceBuilder;
|
||||
|
||||
/**
|
||||
* Starts the server using the given settings.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user