maximsohryakov
@maximsohryakov
MiMEKiZ

Почему зависает Node.js?

Если коротко: после попытки добавить хранение сессий в MongoDB, при запросе страницы к серверу, сервер не реагирует на запрос, а загрузка страницы превращается в бесконечное зрелище иконки загрузки. Если прервать загрузку, в консольном логе сервера появляется GET /vacations - - ms - -

А если быть конкретней:
Код проекта https://github.com/Ortum/myNotes ,
ветка create-session, коммит commit 63125a69327cb4cf18641d37649ce22812560bc1
Стабильно работающий commit 1094f09bf3e282417fa866bac037f8d7cdbeef2c (сразу предыдущий, перед верхним)

Изучаю express по книге Итана Брауна, 2017 года посвященной Express.
В книге реализация хранения сессий в mongodb реализуется через модуль session-mongoose.
Посколько я использую версию express.js 4.x.x, то и это решения уже не возможно, из-за несовместимости версий ( пруф с гитхаб плагина session-mongoose ).
И я решил сделать это дубовым ( а может и нет ) способом.
Подключил express_session = require('express-session'), затем require('connect-mongo')(express_session);.

После чего приступил к подключению к mongodb: ( файл app.js строки 139 - 148 ) p.s. не вставляю сюда код, из-за кривого форматирования(если кто подскажет как это делают красиво, буду благодарен)

Замечу, что это второе подключение к базе, первое в строке 59, mongoose.connect(dbconfig.database, opt);
Данные пользователя, такие как имя пользователя и пароль вынесены из репозитория.

Если убрать все, что связано с сессией, то сервер стартует и без проблем принимает и обрабатывает запросы.
При включенном же сессионировании, сервер бесконечно обдумывает запрос.

p.s.s. заранее прощу простить меня, что все обработчики путей лежать в app.js, а не в родном для них routes/*.js
p.s.s.s я даже не представляю, как можно подойти к формулированию вопроса, чтобы найти что-либо схожее в интернете, и я немного в отчаянии
  • Вопрос задан
  • 943 просмотра
Решения вопроса 1
0xD34F
@0xD34F
Подозрительный кусок кода:

app.use(function(req, res, next) {
  req.session.number =req.session.number + 1 || 1;
})

Где-то тут должен быть вызов next, разве нет?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы