var createError = require("http-errors"); var express = require("express"); var path = require("path"); var cookieParser = require("cookie-parser"); var logger = require("morgan"); var bodyParser = require("body-parser"); var ejsLayouts = require("express-ejs-layouts"); var apiRouter = require("./routes/index"); var apiV1Router = require("./routes/muslim/v1/index"); var app = express(); // view engine setup app.use(ejsLayouts); app.set("layout", "./layouts/api"); app.set("views", path.join(__dirname, "views")); app.set("view engine", "ejs"); app.use(logger("dev")); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, "public"))); app.use("/css", express.static(path.join(__dirname, "public/css"))); app.use("/js", express.static(path.join(__dirname, "public/js"))); app.use("/", apiRouter); app.use("/v1", apiV1Router); // catch 404 and forward to error handler app.use((req, res, next) => { next(createError(404)); }); // error handler app.use((err, req, res, next) => { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get("env") === "development" ? err : {}; // render the error page res.status(err.status || 500); res.render("error", { title: "Otang | Error", layout: "./layouts/api", }); }); module.exports = app;