2016-06-23 38 views
3

这是在我正在MacOsx本地构建的nodejs/express 4应用程序的上下文中。Expressjs随机挂起,如何输出错误?

这是一个简单的应用程序,主要使用postgresql(以本机形式)来呈现网页。

当我浏览我的页面时,登录,注销.....在应用程序随机挂起的一个点上:浏览器保持加载空白页面。在控制台上不输出错误。当路由挂起时,我无法再访问它,但是,我可以访问其他路由。 事实上,它完全随机使得很难找到问题的根源。

是否有一种残酷的方式来找到造成问题的原因?我至少能够找到一种读取错误的方法。

更新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)我使用客户端实例更改为客户端池。 看来,与我以前的代码,每次我将加载一个页面,它会创建一个新的数据库实例和用尽默认10;解释为什么它无法加载第11页。

2)我一定要用done()关闭我的连接。 (非常重要)作为文档中的示例:https://github.com/brianc/node-postgres

我很惊讶我没有收到任何有关该错误的消息。我本可以花几个小时。

+0

对于[pg-promise](https://github.com/vitaly-t/pg-promise);你不会有任何这些问题;) –