let createError = require("http-errors"); let express = require("express"); let path = require("path"); let cookieParser = require("cookie-parser"); let logger = require("morgan"); let sassMiddleware = require("node-sass-middleware"); const session = require("express-session"); const config = require("./config/config.json"); let indexRouter = require("./routes/index"); let app = express(); const sessionMiddleware = session({secret: config.secret}); // view engine setup app.set("views", path.join(__dirname, "views")); app.set("view engine", "pug"); app.set("sessionMiddleware", sessionMiddleware); app.use(logger("dev")); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(sassMiddleware({ src: path.join(__dirname, "public"), dest: path.join(__dirname, "public"), indentedSyntax: true, // true = .sass and false = .scss sourceMap: true })); app.use(express.static(path.join(__dirname, "public"))); app.use(sessionMiddleware); app.use((req, res, next) => { res.locals.session = req.session; next(); }); app.use("/", indexRouter); // catch 404 and forward to error handler app.use((req, res, next) => { next(createError(404)); }); // error handler app.use((err, req, res) => { // 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"); }); module.exports = app;