Node.js,PostgreSQL错误:主机没有pg_hba.conf条目

我正在关注这篇文章(( http://nodeexamples.com/2012/09/21/connecting-to-a-postgresql-database-from-node-js-using-the-pg-module/ )。我已经将我的应用程序部署到heroku,并使用expressnode.js,尝试连接到我刚安装的Heroku中的PostgresSQL数据库,到达文章的最后,我使用命令

node myfile.js 

我得到这个错误

 error: no pg_hba.conf entry for host "...", user "...", database "...", ... 

我该如何去创build一个,并在我的应用程序目录中放置它?

下面是整个错误信息。 我更改了IP地址,用户和数据库的string,但它看起来基本上就像它。

 events.js:72 throw er; // Unhandled 'error' event ^ error: no pg_hba.conf entry for host "00.000.000.00", user "username", database "databasename", SSL off at Connection.parseE (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:526:11) at Connection.parseMessage (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:356:17) at Socket.<anonymous> (/Users/user/workspace/MyApp/app/node_modules/pg/lib/connection.js:105:22) at Socket.emit (events.js:95:17) at Socket.<anonymous> (_stream_readable.js:748:14) at Socket.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:410:10) at emitReadable (_stream_readable.js:406:5) at readableAddChunk (_stream_readable.js:168:9) at Socket.Readable.push (_stream_readable.js:130:10) 

编辑:我做了一些更多的研究,发现'pg_hba.conf'文件在我的

 /usr/local/var/postgres 

我将这行添加到“pg_hba.conf”文件中

 # TYPE DATABASE USER ADDRESS METHOD host all all trust 

也试过了

 # TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 md5 

但它一直说我的主机,用户,数据库等没有条目…是我的'pg_hba.conf'语法在任何方式错误?

改变你的连接代码来使用ssl。 关联你的例子:

 var conString = "pg://admin:guest@localhost:5432/Employees"; var client = new pg.Client(conString); client.connect(); 

变为:

 var client = new pg.Client({ user: "admin", password: "guest", database: "Employees", port: 5432, host: "localhost", ssl: true }); client.connect(); 

https://github.com/brianc/node-postgres/wiki/Client#new-clientobject-config–client

在这种情况下,sequelize忽略了所有的努力来打开ssl,你可以尝试说服pg来默认启用ssl的所有conncetion:

 var pg = require('pg'); pg.defaults.ssl = true; const Sequelize = require('sequelize'); const sequelize = new Sequelize('postgres://...'); 

您还可以使用环境configurationvariables“PGSSLMODE”通过Heroku的Web界面或CLI来“需要”。

案例:将Postgres dB设置为Heroku附加组件,并附加到Heroku Dyno上的应用程序中。

Heroku为如何连接到其中一个附加数据库提供了很好的支持; 然而,不幸的是(或者,我错过了)提到什么来强制执行SSL,因为所有以标准0开始的Heroku dB层默认强制执行SSL。