|
const path = require("path"); |
|
|
|
const express = require("express"); |
|
const bodyParser = require("body-parser"); |
|
const cors = require("cors"); |
|
const authRoutes = require("./routes/auth"); |
|
const userRoutes = require("./routes/user"); |
|
const roomRoutes = require("./routes/room"); |
|
const mongoose = require("mongoose"); |
|
const cookieParser = require("cookie-parser"); |
|
require("dotenv").config(); |
|
|
|
const MODE = process.env.MODE || "DEV" |
|
const port = process.env.PORT; |
|
|
|
mongoose |
|
.connect(process.env.CONNECTION_STRING) |
|
.then((res) => console.log("Connected to MongoDB")) |
|
.catch((err) => console.log("Error in connecting to database")); |
|
|
|
const app = express(); |
|
const http = require("http"); |
|
const server = http.createServer(app); |
|
const { socketIOServerInit } = require("./socket"); |
|
|
|
app.get("/health-check", (req, res, next) => { |
|
res.status(200).send("OK"); |
|
}); |
|
app.use(cors({ origin: process.env.CORS_ALLOWED_HOST, credentials: true })); |
|
app.use(bodyParser.json()); |
|
app.use((req, res, next) => { |
|
|
|
|
|
|
|
next(); |
|
}); |
|
app.use(cookieParser()); |
|
|
|
socketIOServerInit(server); |
|
|
|
app.use((req, res, next) => { |
|
console.log(req.url); |
|
next(); |
|
}); |
|
|
|
|
|
app.use("/api/auth", authRoutes); |
|
app.use("/api/user", userRoutes); |
|
app.use("/api/room", roomRoutes); |
|
|
|
if (MODE=="PROD") { |
|
console.log('Hello') |
|
app.use(express.static('../frontend/dist')); |
|
app.get("/*", (req,res,next) => { |
|
try { |
|
res.sendFile(path.join(__dirname,"../frontend/dist/index.html")) |
|
} catch(err) { |
|
next(err) |
|
} |
|
}) |
|
} |
|
|
|
app.use((error, req, res, next) => { |
|
const status = error.status || 500; |
|
console.log(error); |
|
res.status(status).json({ |
|
message: "Something went wrong", |
|
description: error?.message || "Internal server error", |
|
}); |
|
}); |
|
|
|
server.listen(port, () => { |
|
console.log("Listening on server", port); |
|
}); |
|
|