import "dotenv/config"; import express from "express"; import path from "path"; import logger from "morgan"; import cookieParser from "cookie-parser"; import bodyParser from "body-parser"; import helmet from "helmet"; import compression from "compression"; import fileUpload from "express-fileupload"; import routes from "./routes/index"; import {PORT,HOST} from "./config/constants"; import { accessTokenMiddleWare } from "./utils/helpers"; var app = express(); app.use(compression()); //Compress all routes app.use(helmet()); app.use(fileUpload()); // view engine setup app.set("views", path.join(__dirname, "views")); app.set("view engine", "jade"); app.set("port", process.env.PORT || PORT); app.use( logger("dev", { skip: function (req) { if (req.url == "/ping") { return true; } else { return false; } } }) ); app.use(accessTokenMiddleWare) app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); app.use(express.static(path.join(__dirname, "dist"))); // Enable CORS app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE"); res.header( "Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept" ); next(); }); app.use("/", routes); // catch 404 and forward to error handler app.use(function (req, res, next) { var err = new Error("Not Found"); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get("env") === "development") { app.use(function (err, req, res) { res.status(err.status || 500); res.render("error", { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function (err, req, res) { res.status(err.status || 500); res.render("error", { message: err.message, error: {} }); }); app.listen(process.env.PORT || PORT,process.env.HOST || HOST, () => console.log(`App listening on http://${process.env.HOST || HOST}:${process.env.PORT || PORT}`) ); export default app;