You need to enable JavaScript to run this app. Electron中使用Node.js的pg库连接PostgreSQL无响应如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Electron中使用Node.js的pg库连接PostgreSQL无响应如何解决

问题排查&修复方案

    1. 连接配置逻辑错误
      pg的Client构造函数只会在实例化时读取传入的配置,你后续直接给client.user、client.password赋值不会生效。你传入的connectionString中未携带用户名、密码信息,导致数据库连接鉴权失败,且你没有监听连接错误事件,所以没有任何报错输出。
      正确的配置方式二选一:
    • 直接把账密拼入连接字符串:
      const connectionString = 'postgres://postgres:root@localhost:5432/postgres'
    • 不使用连接字符串,改为传入完整配置对象:
      const connectionData = {
        host: 'localhost',
        port: 5432,
        database: 'postgres',
        user: 'postgres',
        password: 'root'
      }
      
    1. 未等待连接建立就执行查询
      client.connect()是异步方法,你没有等待连接完成就直接发起查询,若查询请求在TCP连接建立前发出,会出现无响应的情况,同时需要给连接过程添加错误处理逻辑捕获异常。
    1. SQL语句存在关键字冲突
      text是PostgreSQL的内置关键字,作为表名使用时需要用双引号包裹,否则会出现SQL语法错误。

修正后可运行代码

const { Client } = require('pg');

// 直接在连接字符串中带入账密
const connectionString = 'postgres://postgres:root@localhost:5432/postgres';
const client = new Client(connectionString);

// 监听全局客户端错误,避免异常无输出
client.on('error', err => {
  console.error('客户端连接错误:', err);
});

client.connect(err => {
  if (err) {
    console.error('连接失败:', err);
    return;
  }
  // 连接成功后再执行查询,表名用双引号包裹避免关键字冲突
  const q = `SELECT * FROM public."text"`;
  client.query(q, (err, res) => {
    if (err) {
      console.log('查询错误:', err);
      return client.end();
    }
    for (let row of res.rows) {
      console.log(row);
    }
    client.end();
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 09:54:03