You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Node+Express连接PostgreSQL报错ECONNREFUSED 127.0.0.1:5432求助

本地Node.js+Express连接PostgreSQL报错ECONNREFUSED 127.0.0.1:5432排查方案

问题情况

本地基于Node.js+Express搭建的服务请求PostgreSQL数据库时,访问localhost:8000/todos接口持续触发连接拒绝错误:Error: connect ECONNREFUSED 127.0.0.1:5432。已确认以下信息:

  • 数据库用户名已改为默认的postgres,密码、主机、数据库名、端口配置均核对无误
  • PostgreSQL服务已启动,可通过SQL Shell执行SELECT * FROM todos;查询手动添加的数据
  • 未使用Docker,查阅同类问题后仍无法解决

PostgreSQL服务状态截图

控制台完整错误信息

Server runnnig on PORT 8080
Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1487:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 5432
}

相关代码文件

server.js

const PORT = 8080;
const express = require("express");
const app = express();
const pool = require("./db");

app.get("/todos", async (req, res) => {
  try {
    const todos = await pool.query("SELECT * FROM todos");
    res.json(todos.rows);
  } catch (err) {
    console.error(err);
  }
});

app.listen(PORT, () => console.log(`Server runnnig on PORT ${PORT}`));

db.js

const Pool = require("pg").Pool;
require("dotenv").config();

const pool = new Pool({
  user: "postgres",
  password: process.env.PASSWORD,
  host: "localhost",
  port: 5432,
  database: "todoapp",
});

module.exports = pool;

排查步骤

  • 检查PostgreSQL监听地址:
    打开PostgreSQL的postgresql.conf配置文件(Windows默认路径:C:\Program Files\PostgreSQL\[版本号]\data;Linux默认路径:/var/lib/postgresql/[版本号]/main),找到listen_addresses配置项,确保值为'*'或包含'127.0.0.1',修改后重启PostgreSQL服务。
  • 验证pg_hba.conf权限规则:
    同目录下的pg_hba.conf文件,添加或确认存在以下规则,允许本地用户通过密码连接:
    host    todoapp     postgres     127.0.0.1/32     scram-sha-256
    
    保存后重启PostgreSQL服务。
  • 确认环境变量加载情况:
    在db.js中添加打印代码,验证process.env.PASSWORD是否正确读取:
    console.log("Loaded password:", process.env.PASSWORD);
    
    若输出undefined,检查.env文件是否在项目根目录、文件名是否正确(需以.开头),或临时替换为明文密码测试(测试后记得改回环境变量)。
  • 用psql测试TCP连接:
    执行命令psql -h 127.0.0.1 -p 5432 -U postgres -d todoapp,若连接失败说明PostgreSQL的TCP监听未正常开启;若连接成功则问题出在Node.js代码或依赖上。
  • 检查pg包版本兼容性:
    确认pg包版本与PostgreSQL版本兼容,可尝试卸载后重装:
    npm uninstall pg
    npm install pg
    
  • 替换localhost为127.0.0.1:
    在db.js中将host: "localhost"改为host: "127.0.0.1",避免DNS解析异常。

内容的提问来源于stack exchange,提问作者user20948241

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:05:30