http-сервер nodejs: как завершить запрос при получении ошибки?

#node.js

#node.js

Вопрос:

В app.js:

 const server = http.createServer(function (req, res) {
    require('./ctl/index.js')(req,res)
});
  

В ctl/index.js:

 module.exports =  async (req,res) => {
    func_not_exists(); // for testing purpose
    res.end("ok");
}
  

После того, как я запускаю сервер с помощью node app.js , открываю URL из веб-браузера, я могу получить is not a function сообщение из журнала, но процесс запроса не завершен (значок веб-браузера продолжает вращаться). Как я могу завершить пользовательский запрос сразу после получения ошибки?

(Я не использую Express.js, но чистый http-модуль. Я не хочу завершать весь процесс с помощью process.exit (), просто хочу завершить текущий пользовательский запрос.)

Ответ №1:

Объявите прослушиватель запроса как асинхронную функцию и используйте try catch в сочетании с await :

 const server = http.createServer(async function (req, res) {
  try {
    await require('./ctl/index.js')(req, res)
  } catch (error) {
    res.end('Something went wrong')
  }
})