Я пытаюсь подключиться к базе данных Postgres из моего приложения узла Heroku, которое работает при локальном запуске, как через узел, так и с помощью команды 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);
}
})()
"
То, что я пробовал до сих пор:
- Использование pg
Client
вместо Pool
- Использование
ssl: true
вместо ssl: { rejectUnauthorized: true }
- Использование
client.query
без использования pool.connect
- Увеличено и пропущено
connectionTimeoutMillis
(быстро разрешается при локальном запуске, так как я запрашиваю базу данных, в которой есть только одна строка) - Я также пытался использовать обратные вызовы и обещания вместо asyn c / await
- Я пытался установить connectionString как с параметром
?sslmode=require
, так и без него - I пробовал использовать версии pg
^7.4.1
и ^7.18.2
до сих пор * 103 3 *
Я предполагаю, что мне чего-то не хватает ни в настройке Heroku, ни в SSL, любая помощь будет принята с благодарностью, спасибо!