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

Express应用连接PostgreSQL报错role "postgres"不存在问题排查

问题根因

报错提示中角色名" postgres"带有换行符,是因为你使用ES6模板字符串拼接连接URI时保留了代码里的换行和缩进空格,最终PostgreSQL将带多余空白字符的字符串识别为完整角色名,匹配不到已存在的postgres角色。

修复方案

你可以任选以下一种方式修改连接代码:

  • 方案1:把模板字符串的拼接逻辑改为单行,移除所有多余换行和缩进:
const dotenv = require('dotenv').config();
var pgp = require('pg-promise')();
var db = pgp(`postgres://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:5432/${process.env.DB_DATABASE}`);
module.exports = db;
  • 方案2:改用配置对象初始化连接,避免字符串拼接出错,可读性更高:
const dotenv = require('dotenv').config();
var pgp = require('pg-promise')();
var db = pgp({
  host: process.env.DB_HOST,
  port: 5432,
  database: process.env.DB_DATABASE,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  max: process.env.DB_CONLIMIT
});
module.exports = db;

可选校验项

修复后如果还有连接异常,可以先在代码中打印拼接完成的连接字符串,确认没有多余空白字符;同时确认你本地postgres角色的登录验证规则和.env配置一致,无密码登录的配置要和终端登录逻辑匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:48:03