Я предложу вам файл, состоящий из классов ошибок (используется для установки сообщения об ошибке и имени ошибки), которые расширяют класс ошибки, а в конструкторе присваивают объекту сообщение об ошибке и имя ошибки, например,
class AuthorizationError extends Error {
constructor(message) {
super(message);
this.name = 'AuthorizationError';
this.message = message;
}
}
// classes of other error types
после этого набора код состояния в зависимости от типа ошибки и возврата, например,
const errorHandler = (error, req, res, next) => {
const message = error.message || 'Something went wrong';
let status = null;
switch(error.name) {
case 'AuthorizationError':
status = 403;
break;
// other error types
}
res.status(status).json({ message });
}
, где бы вы ни столкнулись с ошибкой, создайте новый экземпляр типа класса ошибки
next(new AuthorizationError('Username or password do not match'));