import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import * as dotenv from 'dotenv'; import * as session from 'express-session'; import * as connectRedis from 'connect-redis'; import * as redis from 'redis'; import * as cookieParser from 'cookie-parser'; import { join } from 'path'; import { NestExpressApplication } from '@nestjs/platform-express'; dotenv.config(); async function bootstrap() { const app = await NestFactory.create(AppModule); const RedisStore = connectRedis(session); const redisClient = redis.createClient({ host: 'localhost', port: 6379, }); // app.use(express.urlencoded()); app.use(cookieParser()); // Production servers have to be behind a proxy. if (process.env.NODE_ENV === 'production') { app.set('trust proxy'); } app.use( session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: false, store: new RedisStore({ client: redisClient }), cookie: { sameSite: 'lax', secure: process.env.NODE_ENV === 'production', }, }), ); app.useStaticAssets(join(__dirname, '..', 'public'), { prefix: '/public/', }); app.setBaseViewsDir(join(__dirname, '..', 'views')); app.setViewEngine('pug'); await app.listen(3000, '0.0.0.0'); } bootstrap();