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 error = require("./routes/utils/error"); let config = process.env.NODE_ENV === "test" ? {} : require("./config/config.json"); let indexRouter = require("./routes/index"); const loginRouter = require("./routes/login"); const edtRouter = require("./routes/edt"); const homeRouter = require("./routes/home"); const marksRouter = require("./routes/marks"); let app = express(); const sessionMiddleware = session({ secret: process.env.NODE_ENV === "test" ? "Keyboard Cat" : config.secret }); // view engine setup app.set("views", path.join(__dirname, "views")); app.set("view engine", "pug"); app.set("sessionMiddleware", sessionMiddleware); app.set("config", config); 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); app.use("/login", loginRouter); app.use("/email", require("./routes/email")); app.use("/edt", edtRouter); app.use("/home", homeRouter); app.use("/marks", marksRouter); // catch 404 and forward to error handler app.use((req, res) => { return error(req, res, "Page not found", 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;