1

我正在尝试从我的 Heroku 节点应用程序连接到 Postgres 数据库,该应用程序在本地运行时工作,无论是通过节点还是通过运行heroku local web命令,但是在 Heroku 上运行它时,它在等待时超时pool.connect

我正在通过 Heroku 控制台运行以下代码片段(我也尝试在我的应用程序中直接使用此代码,但这比每次重新部署更有效):

node -e "
    const { Pool } = require('pg');

    const pool = new Pool({
    connectionTimeoutMillis: 15000,
      connectionString: process.env.DATABASE_URL + '?sslmode=require',
      ssl: {
        rejectUnauthorized: true
      }
    });

    console.log('pool created');
    (async() => {

     try {
        console.log('connecting');
        const client = await pool.connect(); // this never resolves
        console.log('querying');
        const { rows } = await client.query('SELECT * FROM test_table LIMIT 1;');
        console.log('query success', rows);
        client.release()
      } catch (error) {
        console.log('query error', error);
      }
    })()
"

到目前为止我尝试过的事情:

  • 使用 pgClient而不是Pool
  • 使用ssl: true代替ssl: { rejectUnauthorized: true }
  • 使用client.query而不使用pool.connect
  • 增加和省略connectionTimeoutMillis(因为我正在查询只有一行的数据库,所以在本地运行时会很快解决)
  • 我也尝试过使用回调和承诺而不是 async / await
  • 我尝试使用?sslmode=require参数和不 使用参数设置 connectionString
    • 到目前为止^7.4.1,我已经尝试过使用 pg 版本^7.18.2

我的假设是 Heroku 设置或 SSL 缺少一些东西,任何帮助将不胜感激,谢谢!

4

0 回答 0