libremdb/app.js

59 lines
2.5 KiB
JavaScript
Raw Normal View History

2022-03-19 17:22:07 +05:30
const express = require('express');
const path = require('path');
const morgan = require('morgan');
const helmet = require('helmet');
const compression = require('compression');
const app = express();
// const movieRouter = require('./routes/movieRoutes');
const viewRouter = require('./routes/viewRoutes');
const globalErrorHandler = require('./controllers/errorControllers');
const { AppError } = require('./utils/errorUtils');
//-------------------------------------------------------------------------//
// GLOBAL MIDDLEWARES
//-------------------------------------------------------------------------//
app.use(compression()); // for compressing response bodies
app.use(
// for making the app more secure by setting some security headers(like CORS)
helmet({
contentSecurityPolicy: {
directives: {
// only allowing images from 'm.media-amazon.com' as crossorigin
'img-src': ["'self'", 'm.media-amazon.com'],
},
},
// 'crossorigin' attribute is needed in the img tag where images are fetched from 'm.media-amazon.com' if the policy below is set to true. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy for more details
crossOriginEmbedderPolicy: false,
})
);
app.set('view engine', 'pug'); // setting pug as a view engine
app.set('views', path.join(__dirname, 'views/pug')); // directory from where html template will be sourced
app.use(express.static(path.join(__dirname, 'public'))); // directory from where files like css, images, fonts, will be sourced
if (process.env.NODE_ENV === 'development') app.use(morgan('dev')); // for logging requests
// app.use(express.json({ limit: '3mb' })); // for parsing json
//-------------------------------------------------------------------------//
// ROUTER MIDDLEWARES
//-------------------------------------------------------------------------//
// app.use('/api/v1/movies', movieRouter); // sub-router for movie related endpoints
app.use('/', viewRouter); // for html pages
//-------------------------------------------------------------------------//
// GLOBAL ERROR HANDLING
//-------------------------------------------------------------------------//
app.all('*', (req, res, next) => {
next(
new AppError(
`the route you requested(${req.originalUrl}) doesn't exist`,
404
)
);
});
app.use(globalErrorHandler); // handling errors in every middleware
module.exports = app;