app.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import express from "express";
  2. import compression from "compression";
  3. import mongoose from "mongoose";
  4. import cors from "cors";
  5. import cookieParser from "cookie-parser";
  6. import esbuild from "esbuild";
  7. import {catchError} from "./HttpError.js";
  8. import otherRoutes from "./routes/other.js";
  9. import userRoutes from "./routes/user.js";
  10. import workoutRoutes from "./routes/workout.js";
  11. let mongoString = "mongodb://127.0.0.1/workout";
  12. if(process.env.NODE_ENV === "production"){
  13. mongoString = `mongodb://workout:${process.env.MONGODB_PASS}@127.0.0.1:27017/workout?authSource=admin`;
  14. }
  15. mongoose.connect(mongoString);
  16. global.cwd = import.meta.dirname;
  17. esbuild.build({
  18. entryPoints: [`${global.cwd}/views/index.js`, `${global.cwd}/views/index.css`],
  19. bundle: true,
  20. outdir: `${global.cwd}/views/build/`
  21. });
  22. const app = express();
  23. app.use(cookieParser(process.env.COOKIE_SECRET));
  24. app.use(compression());
  25. app.use(cors({
  26. origin: process.env.NODE_ENV === "production" ? "https://workout.leemorgan.dev" : "http://localhost:8000",
  27. credentials: true
  28. }));
  29. app.use(express.json());
  30. otherRoutes(app);
  31. userRoutes(app);
  32. workoutRoutes(app);
  33. app.use(catchError);
  34. if(process.env.NODE_ENV !== "production"){
  35. app.listen(8000);
  36. }
  37. export default app;