В конце моего приложения Express, непосредственно перед app.listen, я использую промежуточное программное обеспечение обработчика ошибок Express следующим образом:
app.use(function (err, req, res, next) {
console.error(err);
return res.json(500, err);
})
Я пробовал также с res.json (err) и res.status (500) .json (err)
Когда я делаю запрос на внешнем интерфейсе, который (правильно) выдает ошибку на внутреннем сервере, объект ошибки, который я передал, правильно регистрируется в этом обработчике ошибок. Однако проблема, с которой я столкнулся, заключается в том, что, несмотря на правильное ведение журнала, он принимается в виде HTML на веб-интерфейсе.
На веб-интерфейсе я впервые попробовал использовать
fetch(<endpoint>)
.then(res => res.json())
.then(data => <handle data>)
.catch(e => <handle error>)
... однако это происходит с ошибкой в res.json () (res сразу не воспринимается как ошибка, а вместо этого принимается как HTML)
Я попытался сделать это также с помощью axios, чтобы вырезать шаг res.json (), который, по крайней мере, идет немного дальше, отправив его в catch (), но все же моя ошибка axios.response поступает с сервера в виде HTML и не JSON.
Я знаю, что мой обработчик ошибок Express правильно получает запрос и обрабатывает ожидаемый JSON, поскольку он правильно записывает оттуда при выполнении запроса. Однако то, что происходит дальше, сбивает меня с толку.
Если у кого-то есть опыт с этим, будет очень признателен