//app.js
//we need to put this code at last,this code run when there is no route match
app.all('*',(req,res,next)=> {
const err= new Error(`Can't find ${req.originalUrl} on this server!`)
err.status=404
err.statusCode=404
next(err)
})
//when we use next(err) it will go to error handling middleware and it will catch error and send response.
app.use((err,req,res,next)=> {
err.statusCode= err.statusCode || 500
err.status= err.status || 'error'
res.status(err.statusCode).json({
status:err.status,
message:err.message
})
})
1. Operational Errors not bug invalid user input,failed to connect server and database.
2. Programming Errors,bug by the developers like reading properties of undefined,passing a number where object is expected,using await without async.using req.query instead req.body
3. Express use Global error handling Middleware which catch all error.
//we need to put this code at last,this code run when there is no route match
app.all('*',(req,res,next)=> {
const err= new Error(`Can't find ${req.originalUrl} on this server!`)
err.status=404
err.statusCode=404
next(err)
})
app.get('/', function (req, res, next) {
fs.readFile('/file-does-not-exist', function (err, data) {
if (err) {
next(err) // Pass errors to Express.
} else {
res.send(data)
}
})
})