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

本地PostgreSQL+Express连接报错:服务器不支持SSL连接

解决本地PostgreSQL连接Express API时的SSL错误

问题核心

本地PostgreSQL默认未启用SSL,但你的代码全局强制开启了SSL配置,导致连接时数据库不支持SSL而报错。

修复步骤

1. 调整数据库连接的SSL配置,区分开发/生产环境

修改db.js,仅在生产环境启用SSL,本地开发时关闭:

const { Pool } = require("pg");
const pg = require("pg");

require("dotenv").config();

// 仅生产环境启用全局SSL
pg.defaults.ssl = process.env.NODE_ENV === "production";

const connectionString = process.env.NODE_ENV === "production"
  ? process.env.DATABASE_URL
  : `postgresql://${process.env.PG_USER}:${process.env.PG_PASS}@${process.env.PG_HOST}:${process.env.PG_PORT}/${process.env.PG_DATABASE}`;

const conn = new Pool({ 
  connectionString: connectionString,
  // 生产环境才配置SSL,开发环境自动禁用
  ssl: process.env.NODE_ENV === "production" ? { rejectUnauthorized: false } : false
});

module.exports = conn;

2. 修复API接口中的额外bug

你的index.js里还有两个会导致报错的问题,一并修复:

app.get("/apiv1/:tier", async (req, res) => {
    try {
        // 路由仅定义了tier参数,去掉不存在的date解构
        const { tier } = req.params;
        // 补充排序字段(示例用date,可根据你的表结构调整)
        const allData = await pool.query(
            "SELECT * FROM previous WHERE tier=$1 ORDER BY date DESC LIMIT 25;", 
            [tier]
            );
        const results = allData.rows;
        console.log(results);
        // 记得返回响应,避免客户端等待超时
        res.json({ data: results });
    } catch (error) {
        console.log(error.message);
        // 错误时返回500状态码和错误信息
        res.status(500).json({ error: error.message });
    };
});

3. 验证本地PostgreSQL配置(可选)

如果修改后仍有问题,检查本地PostgreSQL的postgresql.conf文件:

  • 确保ssl = off(默认即为该配置,本地开发无需开启)
  • 重启PostgreSQL服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:37