node.js - Expressjs随机挂起,如何输出错误?

标签 node.js postgresql express

这是在我在 MacOsx 上本地构建的 nodejs/express 4 应用程序的上下文中。

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

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

是否有一种粗暴的方法可以确定导致问题的原因?我至少能够找到一种读取错误的方法。

更新 1:

  • 它系统地发生在我遵循的第 11 条路线上?!!!所以如果我打开同一个链接 11 次,它将在第 11 次挂起。可能是 pg 问题吗?
  • 这不是 session 中间件,所以我认为:即使我禁用它也会发生。

这是我的 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 )
})

最佳答案

的确,这是一个 postgress 客户端实例问题。

1) 我将使用客户端实例更改为客户端池。 似乎在我以前的代码中,每次我加载一个页面时,它都会创建一个新的数据库实例并耗尽默认的 10;解释为什么它无法加载第 11 页。

2) 我确保关闭与 done() 的连接; (非常重要)如文档中的示例:https://github.com/brianc/node-postgres

令我惊讶的是我没有收到任何关于此的错误消息。我本可以为此花费数小时。

关于node.js - Expressjs随机挂起,如何输出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37989095/

相关文章:

javascript - Angular2/Electron 应用程序组件找不到模板 HTML 文件

sql - Postgres 查询返回只有一位作者的书籍

javascript - express 4.x 将 http 重定向到 https

postgresql 无法连接到服务器 - 没有这样的文件或目录

sql - 在 UPDATE 语句的 WHERE 中使用聚合函数的解决方法

node.js - 在 Jade 中添加页脚或其他部分

javascript - nodejs 域实际上如何在多个请求的幕后工作?

node.js - MongoDB Atlas 和 Node JS - 架构布局

node.js - 使用nodejs knox从s3存储桶中删除所有文件?

node.js - node.js的版本和@types/node的版本关系