【问题标题】:Node postgres app running on local but Request timeout on Production节点 postgres 应用程序在本地运行,但在生产中请求超时
【发布时间】:2021-07-12 03:57:41
【问题描述】:

我是 postgres 的新手。我有一个应用程序,它在本地运行良好,具有相同的环境配置,但在发出第一个即登录请求时,它给了我请求超时错误,如下所示。

at=error code=H12 desc="Request timeout" method=POST path="/login" host=abc.herokuapp.com request_id=87ed82a9-799f-415d-8277-bdb195978570 fwd="XX.XX.XX.XXX" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 protocol=https

我使用 Node.js 作为后端,使用 npm pg 包连接 postgres 并将应用程序部署在 heroku 上。

这是连接文件。

const {Pool} = require('pg')

const dbConfig = {
    connectionString: process.env.DATABASE_URL,
    ssl:true,
  }

console.log('process.env.DATABASE_URL: '+process.env.DATABASE_URL);

const pool = new Pool(dbConfig);
pool.on('error',function(err){
    console.log('Error Message'+err.message);
    console.log('Error Stack'+err.stack);
})

module.exports = {
    pool,
}

请求登录处理程序如下:

const { pool } = require('../db/dbConfig');


router.post('/login', async (req, res) => {
    try {
        const { email, password } = req.body;

        if (!email || !password) {
            errors.push({ msg: 'Please enter all fields' });
            res.render('login', { errors });
        }
        console.log("going to query pool"); // gets printed
        const loginResult = await pool.query('SELECT Id, Name, email, FROM users WHERE email = $1 AND password2__c = $2', [email, password]);
        console.log("result"); // this never gets printed
        res.render('dashboard', { user: { name: "aa", token: "abc" } });
    } catch {
        res.render('error')
    }
})

在本地它运行良好并且收到响应,但在生产中它给出了超时。

【问题讨论】:

标签: node.js postgresql heroku heroku-postgres


【解决方案1】:

如果可以连接,则可能是 postgresql 库的初始化方式存在问题。如果您使用的是最新的“node-postgres”(“pg”),请确保您已将 ssl rejectUnauthorized 设置为 false:

const { Pool } = require('pg');
const pool = new Pool({
    connectionString: process.env.DATABASE_URL,
    ssl: { rejectUnauthorized: false }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多