Преобразование error объекта в json

74
22 февраля 2022, 12:30

Использую express, возникла проблема.

При возникновении ошибки во время запроса на сервер, он должен вернуть обьект ошибки.

Как было раньше:

export async function getProjectsList(req: express.Request, res: express.Response) {
    try {
        ...
    } catch (err) {
        return res.status(HTTPStatus.BAD_REQUEST).json(err);
    }
}

Но Response.json() вызывает для переданного объекта JSON.stringify()

const error = new Error('Just an error!'); 
console.log(JSON.stringify(error))

Сейчас создал функцию:

const error = new Error('Just an error!'); 
 
const errPreJson = err => ({error: err.name, message: err.message}); 
 
console.log(JSON.stringify(errPreJson(error)));

Но везде так использовать желания особо нет, когда можно делать так:

const error = new Error('Just an error!'); 
console.log(JSON.stringify(error, ['name', 'message']));

Как бы организовать такое поведение без создания дополнительных функций, ну и чтобы только для инстансов Error работало.

Answer 1

const oldJsonStringify = JSON.stringify; 
JSON.stringify = function(obj) { 
  if (obj instanceof Error) 
    obj = { error: obj.name, message: obj.message }; 
  return oldJsonStringify(obj); 
}; 
 
console.log(JSON.stringify({a:1})); 
console.log(JSON.stringify(new Error('Just an error!')));

READ ALSO
Замена значения массива

Замена значения массива

Подскажите, пожалуйста, как можно реализовать замену числовых значений в массиве не затрагивая строковые значения на javascript? Пробовал регуляркой...

83
плавное выезжание блока с помощью CSS или JS

плавное выезжание блока с помощью CSS или JS

Задача следующая: поставить затемнение на экран при нажатии на кнопку и обратно убирать затемнение при повторном нажатии

78
Не сохраняется токен в LocalStorage

Не сохраняется токен в LocalStorage

Есть файл Token с запросом

100