Files
node-boilerplate/src/index.js
Kar l5 0cf4287063 host
2024-07-27 20:23:25 +05:30

94 lines
2.2 KiB
JavaScript

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;