mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
refactor: catch errors from buildHeader in error handler 🔥
This commit is contained in:
@@ -38,7 +38,7 @@ exports.handleURIErrors = async function handleURIErrors(err, req, res, next) {
|
|||||||
|
|
||||||
// this needs to have four arguments or express treats it as `(req, res, next)`
|
// this needs to have four arguments or express treats it as `(req, res, next)`
|
||||||
// don't remove `next`!
|
// don't remove `next`!
|
||||||
exports.handleErrors = function handleErrors(err, req, res, next) { // eslint-disable-line no-unused-vars
|
exports.handleErrors = async function handleErrors(err, req, res, next) { // eslint-disable-line no-unused-vars
|
||||||
const cases = {
|
const cases = {
|
||||||
EBADCSRFTOKEN: function () {
|
EBADCSRFTOKEN: function () {
|
||||||
winston.error(`${req.path}\n${err.message}`);
|
winston.error(`${req.path}\n${err.message}`);
|
||||||
@@ -80,20 +80,26 @@ exports.handleErrors = function handleErrors(err, req, res, next) { // eslint-di
|
|||||||
res.render('500', data);
|
res.render('500', data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const data = await getErrorHandlers(cases);
|
||||||
plugins.hooks.fire('filter:error.handle', {
|
try {
|
||||||
cases: cases,
|
|
||||||
}, (_err, data) => {
|
|
||||||
if (_err) {
|
|
||||||
// Assume defaults
|
|
||||||
winston.warn(`[errors/handle] Unable to retrieve plugin handlers for errors: ${_err.message}`);
|
|
||||||
data.cases = cases;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.cases.hasOwnProperty(err.code)) {
|
if (data.cases.hasOwnProperty(err.code)) {
|
||||||
data.cases[err.code](err, req, res, defaultHandler);
|
data.cases[err.code](err, req, res, defaultHandler);
|
||||||
} else {
|
} else {
|
||||||
defaultHandler();
|
await defaultHandler();
|
||||||
}
|
}
|
||||||
});
|
} catch (_err) {
|
||||||
|
res.status(500).send(_err.message);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
async function getErrorHandlers(cases) {
|
||||||
|
try {
|
||||||
|
return await plugins.hooks.fire('filter:error.handle', {
|
||||||
|
cases: cases,
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
// Assume defaults
|
||||||
|
winston.warn(`[errors/handle] Unable to retrieve plugin handlers for errors: ${err.message}`);
|
||||||
|
return { cases };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user