Инструменты пользователя

Инструменты сайта


nodejs:404

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
nodejs:404 [2021/08/17 22:45]
werwolf создано
nodejs:404 [2023/01/12 12:18] (текущий)
Строка 15: Строка 15:
     });     });
 }; };
 +</​code>​
 +
 +**server.js**
 +<code javascript>​
 +const express = require('​express'​);//​Подключаем модуль
 +const path = require('​path'​);//​Модуль для работы с путями к файлам и папкам
 +const csrf = require('​csurf'​);//​CSRF - защита (Cross-Site Request Forger)
 +const flash = require('​connect-flash'​);//​серверные сообщения
 +const exphbs = require('​express-handlebars'​);//​Подключаем шаблонизатор
 +const db = require('​mongoose'​);​ //​библиотека для mongodb
 +const session = require('​express-session'​);//​модуль для создания сессий,​ в express
 +const MongoStore = require('​connect-mongodb-session'​)(session);//​Реквайр возвращает функцию которую мы сразу вызываем,​
 +// куда мы передаем пакет session, который используем для синхронизации. Вернет класс
 +const config =  require('​./​config/​config'​);​ //​конфиг с url к БД, и секретным ключом
 +
 +const varMiddleware = require('​./​middleware/​variables'​);//​модуль проверки авторизации
 +const userMiddleware = require('​./​middleware/​user'​);//​модуль инициализации авторизованного пользователя
 +const errorMiddleware = require('​./​middleware/​error'​);//​модуль инициализации страницы 404
 +
 +const app= express();//​Результат работы модуля express, по сути создает сервер
 +const PORT = process.env.PORT || 3000; //​Получить порт из переменного окружения или использовать дефолтный
 +const store = new MongoStore({//​создаем коллекцию в БД
 +    collection: '​sessions',//​Название коллекции
 +    uri: config.mongoURI//​коннект
 +
 +});
 +
 +/**
 + * Подключаем роуты
 + */
 +const homeRoutes = require('​./​routes/​home'​);//​главная страница
 +const coursesRoutes = require('​./​routes/​courses'​);//​Страница courses
 +const addRoutes = require('​./​routes/​add'​);//​Страница add
 +const aboutRoutes = require('​./​routes/​about'​);//​Страница about
 +const cardRoutes = require('​./​routes/​card'​);//​Страница about
 +const ordersRoutes = require('​./​routes/​orders'​);//​Страница about
 +const authRoutes = require('​./​routes/​auth'​);//​Страница auth
 +
 +
 +const hbs= exphbs.create({//​Настройки шаблонизатора
 +    defaultLayout:​ '​main',//​Шаблон по умолчанию,​ основной,​ (template/​layouts/​main.hbs)
 +    extname: '​hbs',​ //​Расширение шаблонов,​ пользовательское. По умолчанию express-handlebars
 +    helpers: require('​./​helpers/​hbs-helpers'​)//​подключаем свои операторы
 +});
 +
 +app.engine('​hbs',​ hbs.engine);//​Подключени шаблонизатора к express, регестрируем движок
 +app.set('​view engine',​ '​hbs'​);//​Запускаем шаблонизатор,​ используем
 +app.set('​views',​ '​template'​);//​Указываем папку с шаблонами
 +
 +app.use(express.static(path.join(__dirname,'​public'​)));//​Статические папки для хранения стилей картинок
 +app.use(express.urlencoded({extended:​ true}));
 +app.use(session({//​инициализация сессии
 +    secret: config.session_secret,//​секретный ключ для сессии
 +    resave: false,
 +    saveUninitialized:​ false,
 +    store: store //​передаем объект
 +}));
 +
 +
 +
 +app.use(csrf());//​Включение CSRF защиты (Cross-Site Request Forger), подключать нужно после сессии
 +app.use(flash());//​серверные сообщения,​ подключать нужно после сессии
 +app.use(varMiddleware);//​middleware - срабатывает при загруке страницы,​ данный метод проверяет авторизацию middleware/​variables.js
 +app.use(userMiddleware);//​middleware - срабатывает при загруке страницы,​ инициализируем авторизованного пользователя
 +/**
 + * Регестрируем роуты, с префиксами
 + */
 +app.use('/',​ homeRoutes);//​Главная страница
 +app.use('/​courses',​coursesRoutes);//​страница courses
 +app.use('/​add',​addRoutes);//​страница add
 +app.use('/​about',​aboutRoutes);//​Страница about
 +app.use('/​card',​cardRoutes);//​Страница корзина
 +app.use('/​orders',​ordersRoutes);//​Страница заказов
 +app.use('/​auth',​authRoutes);//​Страница заказов
 +app.use(errorMiddleware);//​Страница 404, middleware
 +
 +
 +/**
 + * Запуск сервера
 + * @returns {Promise<​void>​}
 + */
 +async function start(){
 +    try{
 +        await db.connect(config.mongoURI,​{//​подключение к БД
 +            useNewUrlParser:​ true,
 +            useFindAndModify:​ false
 +        });
 +
 +        console.log('​MongoDB has started ...');
 +        app.listen(PORT,​ () => {//​Слушать 3000 порт
 +            console.log(`server is running on port ${PORT}`);
 +
 +
 +        });
 +    }
 +    catch(e){
 +        console.log(e);//​Ксли коннект не удался;​
 +    }
 +}
 +start();
 +</​code>​
 +
 +<code javascript>​
 +<​h1>​404 Ошибка</​h1>​
 +<​p>​Страница не найдена</​p>​
 +
 +<a href="/">​Вернуться на главную страницу</​a>​
 </​code>​ </​code>​
nodejs/404.1629229553.txt.gz · Последние изменения: 2023/01/12 12:17 (внешнее изменение)