2016-06-23 40 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);你不會有任何這些問題;) –