UNPKG

create-benm-app

Version:

Boilerplate for REST API with Node.js, ExpressJS, and MongoDB

60 lines (51 loc) 1.61 kB
var express = require("express"); var path = require("path"); var cookieParser = require("cookie-parser"); var logger = require("morgan"); require("dotenv").config(); var indexRouter = require("./routes/index"); var apiRouter = require("./routes/api"); var apiResponse = require("./helpers/apiResponse"); var cors = require("cors"); // DB connection var MONGODB_URL = process.env.MONGODB_URL; var mongoose = require("mongoose"); mongoose.connect(MONGODB_URL, { useNewUrlParser: true, useUnifiedTopology: true }).then(() => { //don't show the log when it is test if(process.env.NODE_ENV !== "test") { console.log("DataBase connected successfully..."); console.log("🚀App is running ... \n"); console.log("Press CTRL + C to stop the process. \n"); } }) .catch(err => { console.error("App starting error:", err.message); process.exit(1); }); var app = express(); //don't show the log when it is test if(process.env.NODE_ENV !== "test") { app.use(logger("dev")); } app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, "../", "public"))); // Why this ../ because we are in src folder //To allow cross-origin requests app.use(cors()); //Route Prefixes app.use("/", indexRouter); app.use("/api", apiRouter); // throw 404 if URL not found app.all("*", function(req, res) { return apiResponse.notFoundResponse(res, "API is not found"); }); app.use((err, req, res) => { if(err.name == "UnauthorizedError"){ return apiResponse.unauthorizedResponse(res, err.message); } }); module.exports = app;