app.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import "./bootstrap";
  2. import "reflect-metadata";
  3. import "express-async-errors";
  4. import express, { Request, Response, NextFunction } from "express";
  5. import cors from "cors";
  6. import cookieParser from "cookie-parser";
  7. import * as Sentry from "@sentry/node";
  8. import "./database";
  9. import uploadConfig from "./config/upload";
  10. import AppError from "./errors/AppError";
  11. import routes from "./routes";
  12. import { logger } from "./utils/logger";
  13. import { messageQueue, sendScheduledMessages } from "./queues";
  14. import bodyParser from 'body-parser';
  15. Sentry.init({ dsn: process.env.SENTRY_DSN });
  16. const app = express();
  17. app.set("queues", {
  18. messageQueue,
  19. sendScheduledMessages
  20. });
  21. const bodyparser = require('body-parser');
  22. app.use(bodyParser.json({ limit: '10mb' }));
  23. app.use(
  24. cors({
  25. credentials: true,
  26. origin: process.env.FRONTEND_URL
  27. })
  28. );
  29. app.use(cookieParser());
  30. app.use(express.json());
  31. app.use(Sentry.Handlers.requestHandler());
  32. app.use("/public", express.static(uploadConfig.directory));
  33. app.use(routes);
  34. app.use(Sentry.Handlers.errorHandler());
  35. app.use(async (err: Error, req: Request, res: Response, _: NextFunction) => {
  36. if (err instanceof AppError) {
  37. logger.warn(err);
  38. return res.status(err.statusCode).json({ error: err.message });
  39. }
  40. logger.error(err);
  41. return res.status(500).json({ error: "ERR_INTERNAL_SERVER_ERROR" });
  42. });
  43. export default app;