Add on-error hook (#4233)

* Add on-error hook

Closes #2906

* Ignore unspecified listeners

* Document error hook
This commit is contained in:
Rijk van Zanten
2021-02-22 19:00:53 -05:00
committed by GitHub
parent f87cbb5824
commit 0beaf56dc3
3 changed files with 14 additions and 3 deletions

View File

@@ -1,7 +1,14 @@
import { EventEmitter2 } from 'eventemitter2';
import logger from './logger';
const emitter = new EventEmitter2({ wildcard: true, verboseMemoryLeak: true, delimiter: '.' });
const emitter = new EventEmitter2({
wildcard: true,
verboseMemoryLeak: true,
delimiter: '.',
// This will ignore the "unspecified event" error
ignoreErrors: true,
});
/**
* Emit async events without throwing errors. Just log them out as warnings.

View File

@@ -3,6 +3,7 @@ import { BaseException } from '../exceptions';
import logger from '../logger';
import env from '../env';
import { toArray } from '../utils/to-array';
import { emitAsyncSafe } from '../emitter';
const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
let payload: any = {
@@ -66,7 +67,9 @@ const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
}
}
return res.json(payload);
emitAsyncSafe('error', payload.errors).then(() => {
return res.json(payload);
});
};
export default errorHandler;

View File

@@ -81,8 +81,9 @@ module.exports = function registerHook({ exceptions }) {
| `middlewares.init` | `before` and `after` | No |
| `request` | `not_found` | No |
| `response` | | No† |
| `items` | `create`, `update` and `delete` | Optional |
| `error` | | No |
| `auth` | `success`†, `fail`† and `refresh`† | No |
| `items` | `create`, `update` and `delete` | Optional |
| `activity` | `create`, `update` and `delete` | Optional |
| `collections` | `create`, `update` and `delete` | Optional |
| `fields` | `create`, `update` and `delete` | Optional |