/
ChizhenkoM
/
web-nodejs-labs
Обзор
Документация
Войти
/
ChizhenkoM
/
web-nodejs-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
backend/server.js
79 строк
3 KB
ChizhenkoM
update: server.js
29 май 2026, 08:50
Верифицирован
29 май 2026, 08:50
0fd7802
Код
Авторство
О чём код?
// Импортируем Fastify и плагины. import Fastify from 'fastify'; import FastifyStatic from '@fastify/static'; import fastifyPostgres from '@fastify/postgres'; import fastifyJwt from '@fastify/jwt'; import dotenv from 'dotenv'; import path from 'path'; import { fileURLToPath } from 'url'; // Импортируем файл с роутами для нашей лабораторной работы. import lab7Routes from './src/routes/lab7/index.js'; import lab8Routes from './src/routes/lab8/index.js'; import lab9Routes from './src/routes/lab9/index.js'; import lab10Routes from './src/routes/lab10/index.js'; import lab11Routes from './src/routes/lab11/index.js'; import lab12Routes from './src/routes/lab12/index.js'; import Task1Service from './src/services/lab8/task1.service.js'; import Task2Service from './src/services/lab8/task2.service.js'; // Получаем __dirname. const __filename = fileURLToPath(import.meta.url); console.log('__filename', __filename); const __dirname = path.dirname(__filename); console.log('__dirname', __dirname); const users = await Task2Service.getAllGroup(); const users2 = await Task2Service.getAllStadium(); console.log(users2); // Создаем экземпляр Fastify. Включаем логгер для удобной отладки. const fastify = Fastify({ logger: true }); dotenv.config({ path: '.env.local' }); if (!process.env.SECRET_KEY) { console.error('ERROR: SECRET_KEY is not defined in .env.local'); process.exit(1); } fastify.register(fastifyPostgres, { connectionString: process.env.DATABASE_URL }); // 1. Регистрируем плагин для отдачи статических файлов. // Он будет раздавать HTML/CSS/JS из папки `public`. fastify.register(FastifyStatic, { root: path.join(__dirname, '../', 'public'), }); // 3. Запускаем сервер. fastify.register(fastifyJwt, { secret: process.env.SECRET_KEY }); fastify.decorate("authenticate", async function (request, reply) { try { await request.jwtVerify(); } catch (err) { reply.code(401).send({ error: "Unauthorized" }); } }); fastify.register(lab8Routes, { prefix: '/api/lab8' }); fastify.register(lab7Routes, { prefix: '/api/lab7' }); fastify.register(lab9Routes, { prefix: '/api/lab9' }); fastify.register(lab10Routes, { prefix: '/api/lab10' }); fastify.register(lab11Routes, { prefix: '/api/lab11' }); fastify.register(lab12Routes, { prefix: '/api/lab12' }); const start = async () => { try { // Сервер будет слушать порт 3000 на всех доступных сетевых интерфейсах. // '0.0.0.0' важно для работы внутри Docker контейнера. await fastify.listen({ port: 3000, host:'0.0.0.0' }); console.log('JWT secret loaded:', !!process.env.SECRET_KEY); } catch (err) { // Если при запуске произошла ошибка, логируем ее и завершаем процесс. fastify.log.error(err); process.exit(1); } }; start();