Heroku заменяет ответ на ошибку JSON страницей ошибок

#node.js #express #heroku #http-error

Вопрос:

Я создаю API с помощью Express, который возвращает ответы JSON как для успешных запросов, так и для сбоев. Например, ошибка из-за неверного ввода может выглядеть примерно так

 app.post('/api/new-post', (req, res) => {
  const { title, body } = req.body;
  if (!title) {
    res.status(400).json({ error: 'POST_TITLE_REQUIRED' });
    return;
  else if (!body) {
    res.status(400).json({ error: 'POST_BODY_REQUIRED' });
    return;
  }
  // no error, perform the action and return the result
  res.json(createPost(title, body);
}
 

Это прекрасно работает при локальном запуске. При передаче неверных входных данных сервер возвращает ошибку с ответом JSON. Однако, когда я развертываюсь в Heroku, практически любой ответ с кодом состояния ошибки заменяется общей страницей ошибок HTML.

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
    <title>400</title>
    <meta http-equiv="Cache-Control" content="no-cache" />
</head>

<body>
    <p>
        Bad Request
    </p>
</body>

</html>
 

Есть ли какой-нибудь способ отключить это и сохранить исходные ответы?

Комментарии:

1. Давайте проверим devcenter.heroku.com/articles/…