2016-06-23 3 views
3

Это в контексте приложения nodejs/express 4, которое я создаю локально на MacOsx.Expressjs случайно зависает, как выводить ошибки?

Это простое приложение, которое в основном использует postgresql (в родной форме) для визуализации страниц.

Когда я просматриваю свои страницы, логин, выход из системы ..... в точке, где приложение случайно зависает: браузер остается загружать пустую страницу. Ошибка не выводится на консоль. Когда маршрут зависает, я больше не могу к нему обращаться, НО, я могу получить доступ к другим маршрутам. Тот факт, что его совершенно случайное затрудняет поиск источника проблемы.

Есть ли жестокий способ найти то, что вызывает проблему? Я бы, по крайней мере, смог найти способ прочитать ошибку.

UPDATE 1:

  • Это происходит Систематически на 11-м маршруте я следую !!! Поэтому, если я открою ту же ссылку 11 раз, она будет висеть на 11-м. Это может быть проблема pg?
  • Это не промежуточное программное обеспечение сеанса, и я думаю: это происходит, даже если я отключу его.

Вот мой app.js запись файла:

import * as express from "express" 
import * as exphbs from "express-handlebars" 
import directory from "./source/apps/directory/directory_controller" 
import users from "./source/apps/users/users_controller" 
import * as session from "express-session" 


// Non require variables 
let app = express() 
let port = process.env.PORT || 3002 
import * as forms from "formidable" 


app.use(session({ secret: 'keyboard cat' })) 


app.use(function(req, res, next){ 
     res.locals.session = req.session 
     next() 
}) 


function logErrors(err, req, res, next) { 
    console.error("middleware", err.stack) 
    console.log("middleware", err) 
    next(err) 
} 

app.use(logErrors) 

/** Routes */ 
app.use("/directory", directory) 
app.use("/users", users) 

/** Views */ 
app.set("views", __dirname + "/source/") 
app.engine('handlebars', exphbs({ 
    defaultLayout: __dirname + "/source/views/layouts/main", 
    partialsDir: "./source/apps/directory/views/partials/" 
})) 
app.set("view engine", "handlebars") 


// app.use(express.static(__dirname + '/public')); 
app.listen(port, function() { 
    console.log("Server is listening on port:" + port) 
}) 

ответ

1

В самом деле, это была проблема экземпляра клиента Postgress.

1) Я изменил использование экземпляра клиента в пул клиентов. Кажется, что с моим предыдущим кодом, каждый раз, когда я загружал страницу, он создавал новый экземпляр db и исчерпывал значение по умолчанию 10; объясняя, почему он не мог загрузить 11-ю страницу.

2) Я завершаю свою связь с done(); (очень важно) в качестве примера в документации: https://github.com/brianc/node-postgres

Я удивлен, что у меня не возникло сообщение об ошибке. Я мог бы потратить на это много часов.

+0

У вас не было бы никаких проблем с [pg-prom] (https://github.com/vitaly-t/pg-promise);) –

Смежные вопросы