Экспресс-обработчик ошибок регистрирует правильный объект ошибки, но отправляет HTML во внешний интерфейс - PullRequest
0 голосов
/ 08 ноября 2018

В конце моего приложения 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, поскольку он правильно записывает оттуда при выполнении запроса. Однако то, что происходит дальше, сбивает меня с толку.

Если у кого-то есть опыт с этим, будет очень признателен

...