MountainConqueror
MountainConqueror

Reputation: 602

Adding error handling to Node.js server

My question is how can I add error handling for this very simple Node.js/Express server? It can just console.log errors. Should it be a part of app.post ?

const app = require('express')();
const bodyParser = require('body-parser');
const cors = require('cors');

const secretNumber = Math.floor(Math.random() * 10000) + 1;

app.use(cors());

app.use(bodyParser.json());

app.post('/number', (req, res) => {

  const guess = req.body.isNumber;

  if (guess < secretNumber) {
    res.json({
      resultText: 'The number that you are searching for is higher than yor guess.',
      resultCode: 'higher',
      yourGuess: guess
    });
  } else if (guess > secretNumber) {
    res.json({
      resultText: 'The number that you are searching for is lower than yor guess.',
      resultCode: 'lower',
      yourGuess: guess
    });
  } else {
    res.json({
      resultText: 'Congratulations! You have just found the secret number!',
      resultCode: 'success',
      yourGuess: guess
    });
  }

});


app.listen(3001, () => console.log('Listening on port 3001.'));

I found code like this:

function errorHandler (err, req, res, next) {
  res.status(500)
  res.render('error', { error: err })
}

But I don't know where exactly should I put it.

Upvotes: 0

Views: 25

Answers (1)

Tareq
Tareq

Reputation: 5363

In your routes, you forward the error to the next function and your last middleware should handle it.

app.post('/number', (req, res, next) => {

  const guess = req.body.isNumber;

  if (guess < secretNumber) {
    res.json({
      resultText: 'The number that you are searching for is higher than yor guess.',
      resultCode: 'higher',
      yourGuess: guess
    });
  } else if (guess > secretNumber) {
  // Error here for example!!
   next(new Error('My error msg :)'))
  } else {
    res.json({
      resultText: 'Congratulations! You have just found the secret number!',
      resultCode: 'success',
      yourGuess: guess
    });
  }

});

// Error handler
app.use(function(err, req, res, next) {
  res.status(500)
  res.json({ error: err.message })
});


app.listen(3001, () => console.log('Listening on port 3001.'));

Upvotes: 1

Related Questions