【发布时间】:2014-04-28 12:11:42
【问题描述】:
我正在尝试建立从 NodeJs 应用程序到我的 Postgres 本地数据库的简单连接。 这是我的节点代码 index2.js 的内容
var fs = require('fs');
var path = require('path');
var PGPASS_FILE = path.join(__dirname, "./.pgpass");
var pgtokens = fs.readFileSync(PGPASS_FILE).toString().trimRight().split(":");
var host = pgtokens[2];
var port = pgtokens[3];
var dbname = pgtokens[4];
var user = pgtokens[0];
var password = pgtokens[1];
var conString = "postgres://"+user+":"+password+"@"+host+":"+port+"/"+dbname;
var pg = require('pg.js');
var Sequelize = require('sequelize');
var sequelize = new Sequelize(dbname, user, password,{
dialectModulePath:"pg.js",
dialect: "postgres",
port: 5432
});
sequelize
.authenticate()
.complete(function (err) {
if (!err) {
console.log('Unable to connect to the database', err);
} else {
console.log('Connection has been establised succesfully!');
}
})
我正在使用模块 pg.js 而不是 pg 连接到 Postgres,并且我已经测试过它可以工作。
我的问题是 Sequelize。我得到的错误如下:
c:\psql-node\node-modules\sequelize\lib\transaction-manager.js:10
throw new Error("The dialect + sequelize.getDialect()+" is not support
^
Error: The dialect postgres is not suppported.
at new module.exports (c:\psql-node\node_modules\sequelize\lib\transaction-manager.js:10:11)
at new module.exports.Sequelize (c:\psql-node\node_modules\sequelize\lib\sequelize.js:128:31)
at Object.<anonymous> (c:\psql-node\index2.js:16:17)
etc...
说实话,我不确定我如何告诉 Sequelize 使用 'pg.js' 是否正确,这就是 dialectModulePath:"pg.js"
有什么想法吗?
编辑: 感谢@peter-lyons,我发现了更多关于这个问题的信息: 我得到的错误几乎相同,但在它指示之前:
[Error: Cannot find module 'pg/lib/connection-parameters'] code: 'MODULE_NOT_FOUND'
这是正常的,因为它的路径应该是pg.js/lib/connection-parameters
知道我如何修改 node_modules\sequelize\lib\sequelize.js 以获取正确的文件吗?
【问题讨论】:
-
好的,所以现在要保持理智,请确保您使用的是绝对最新版本的 sequelize。 master 中的代码看起来应该可以正常工作。 github.com/sequelize/sequelize/blob/…
-
我昨天下载了它,使用 npm install --save sequelize 并在我的 package.json 中添加了“^1.7.3”版本。但是,我检查了您的链接和我的 connector-managers.js 文件,并且缺少该特定行,因此将尝试卸载并重新安装以查看这是否有所不同,否则将手动修改它并在 Sequelize 的 github 上报告问题。谢谢@PeterLyons
标签: node.js postgresql sequelize.js