在nodejs中连接到heroku postgres db时出错

时间:2018-05-06 19:32:59

标签: node.js postgresql express heroku psql

似乎我的数据库升级到10.2后我无法连接。

我正在使用pg 7.4.2 npm包。

要明确的是,我使用连接了?ssl = true的相同连接字符串连接6个月没有问题。

我通过Pool或Client连接此错误。

AssertionError [ERR_ASSERTION]: false == true
    at Object.exports.connect (_tls_wrap.js:1099:3)
    at Socket.<anonymous> (/home/e/express/testpg/node_modules/pg/lib/connection.js:94:23)
    at Object.onceWrapper (events.js:219:13)
    at Socket.emit (events.js:127:13)
    at Socket.emit (domain.js:421:20)
    at addChunk (_stream_readable.js:269:12)
    at readableAddChunk (_stream_readable.js:256:11)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onread (net.js:598:20)

我现在正在硬编码完整的postgres连接字符串,因此env变量没有问题。

我尝试在连接字符串的末尾添加/删除?ssl = true,并从构造函数中添加/删除ssl:true。我也尝试过无论有没有承诺。无论本地和部署到heroku都有相同的错误。

进口:

import { Pool, Client } from 'pg'

方法1:

let pool = new Pool({
  connectionString: csnew,
  ssl: true
})

pool.connect().then( client => {
  console.log('connected')
})
.catch(e=> {
  console.log(e)
})

方法2:

let pgclient = new Client({
  connectionString: csnew,
  ssl: true
})
pgclient.connect().then( () => {
  console.log('connected')
}).catch(e=> {
  console.log(e)
})

1 个答案:

答案 0 :(得分:4)

那是因为v7.4.2破坏了它的SSL支持。 Here's the open issue

在问题解决之前,您需要严格使用v7.4.1。

<强>更新

7.4.3版解决了这个问题。