从Node.js应用程序连接到Amazon上通过RDS托管的postgres时超时错误
我正在尝试在Node.js应用程序中使用postgres。我已经创建了一个db实例,我正在使用pg连接到它。当我尝试连接到它时,会出现以下错误:从Node.js应用程序连接到Amazon上通过RDS托管的postgres时超时错误,node.js,postgresql,amazon-web-services,Node.js,Postgresql,Amazon Web Services,我正在尝试在Node.js应用程序中使用postgres。我已经创建了一个db实例,我正在使用pg连接到它。当我尝试连接到它时,会出现以下错误: { Error: connect ETIMEDOUT xxx.xx.xx.xxx:5432 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14) errno: 'ETIMEDOUT', code: 'ETIMEDOUT', syscall: 'connect'
{ Error: connect ETIMEDOUT xxx.xx.xx.xxx:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14)
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: 'xxx.xx.xx.xxx',
port: 5432 }
我已经确保数据库是公开的。我已经在SO、google和duckduckgo上搜索了这个错误,但没有找到类似的错误
我反复检查了主机、用户、数据库、密码和端口是否正确。我正在使用pg文档和aws文档来设置连接
我喜欢任何人提供的任何见解
const express = require('express');
const logger = require('morgan');
const helmet = require('helmet');
const { Pool, Client } = require('pg');
const server = express();
server.use(logger('dev'));
server.use(helmet());
const keys = require('./keys/keys');
const pgConfig = {
host: keys.pgHost,
user: keys.pgUserName,
database: keys.pgDBName,
password: keys.pgUserPW,
port: keys.pgDBPort
};
const pool = new Pool({ ...pgConfig });
server.get('/', async (req, res) => {
await pool.connect((err, client, release) => {
if (err) {
console.log(err);
}
})
return res.status(200).send('<h1>Welcome to the server</h1>');
});
module.exports = server;
const express=require('express');
常量记录器=需要('morgan');
常量头盔=需要(“头盔”);
const{Pool,Client}=require('pg');
const server=express();
使用(记录器('dev'));
使用(helmet());
常量键=需要('./键/键');
常量pgConfig={
主机:keys.pgHost,
用户:keys.pgUserName,
数据库:keys.pgDBName,
密码:keys.pgUserPW,
端口:keys.pgDBPort
};
constpool=新池({…pgConfig});
server.get('/',异步(req,res)=>{
等待池连接((错误、客户端、释放)=>{
如果(错误){
控制台日志(err);
}
})
返回res.status(200).send(‘欢迎使用服务器’);
});
module.exports=服务器;
编辑:我能够使用pgadmin连接到数据库,使用保存在我的项目中的相同主机、db用户名和密码我发现了问题所在。我实际上正在成功地连接。我没有在
pool.connect()
中返回,这导致超时。我把它改为下面,现在它正在安慰出“没有错误”和没有连接超时错误
await pool.connect((err, client, release) => {
if (err) {
console.log(err);
} else {
return console.log("no error");
}
})
我发现了问题所在。我实际上正在成功地连接。我没有在
pool.connect()
中返回,这导致超时。我把它改为下面,现在它正在安慰出“没有错误”和没有连接超时错误
await pool.connect((err, client, release) => {
if (err) {
console.log(err);
} else {
return console.log("no error");
}
})