所以我随便开发了一个简单的node.js应用程序,它在我的电脑上工作就好了。
我安装了 heroku toolbelt ,当我运行 foreman start 时,应用程序运行正常。
在heroku中部署应用程序似乎在使用 sequelize 与postgres进行协调时会给我一些错误(我甚至不确定这是导致错误的原因,但差不多)。应用程序崩溃,我所拥有的是heroku日志:
2014-01-05T11:07:39.850661+00:00 app[web.1]: Servidor escuchando al puerto: 25144
2014-01-05T11:07:39.911641+00:00 app[web.1]:
2014-01-05T11:07:39.912039+00:00 app[web.1]: timers.js:103
2014-01-05T11:07:39.912288+00:00 app[web.1]: if (!process.listeners('uncaughtException').length) throw e;
2014-01-05T11:07:39.913123+00:00 app[web.1]: ^
2014-01-05T11:07:39.915970+00:00 app[web.1]: at TransactionManager.getConnectorManager (/app/node_modules/sequelize/lib/transaction-manager.js:25:36)
2014-01-05T11:07:39.915970+00:00 app[web.1]: at TransactionManager.query (/app/node_modules/sequelize/lib/transaction-manager.js:39:15)
2014-01-05T11:07:39.915970+00:00 app[web.1]: at module.exports.Sequelize.query (/app/node_modules/sequelize/lib/sequelize.js:310:36)
2014-01-05T11:07:39.915970+00:00 app[web.1]: at null.<anonymous> (/app/node_modules/sequelize/lib/query-interface.js:901:40)
2014-01-05T11:07:39.915970+00:00 app[web.1]: TypeError: Cannot call method 'setTypeParser' of undefined
2014-01-05T11:07:39.915970+00:00 app[web.1]: at new module.exports.ConnectorManager (/app/node_modules/sequelize/lib/dialects/postgres/connector-manager.js:19:19)
2014-01-05T11:07:39.915970+00:00 app[web.1]: at module.exports.CustomEventEmitter.run (/app/node_modules/sequelize/lib/emitters/custom-event-emitter.js:24:18)
2014-01-05T11:07:39.915970+00:00 app[web.1]: at Timer.list.ontimeout (timers.js:101:19)
2014-01-05T11:07:41.217303+00:00 heroku[web.1]: Process exited with status 1
2014-01-05T11:07:41.234281+00:00 heroku[web.1]: State changed from starting to crashed
第一行(“Servidor escuchando al puerto:XXXX”)实际上是app.js(主.js文件)的一部分,它是最后几行:
http.createServer(app).listen(app.get('port'), function(){
console.log('Servidor escuchando al puerto: ' + app.get('port'));
});
正如我之前所说,它在本地运行正常(执行 foreman start 正确地在localhost上显示它)但是我在heroku上没有运气。 感谢您的任何见解和帮助=)
编辑:我已经设法跟踪了一些错误,似乎有一个调用:
pg.types.setTypeParser(20, String)
sequelize 模块中某处抛出错误,因为pg.types未定义 我只是做了检查:
console.log(require('pg'));
确实似乎没有字段“类型” 这是它的意思吗?我错过了什么吗?
答案 0 :(得分:0)
pg.types
来自pg
:
请参阅包json:
https://github.com/brianc/node-postgres/blob/master/package.json
这是这里的包:
https://www.npmjs.org/package/pg-types
如果您没有,并且您通过npm安装了pg,请尝试删除pg并重新运行npm install并查看是否有任何错误。它应该下载pg-types工具。
您可以在此处查看pg.types
具体定义的位置:
https://github.com/brianc/node-postgres/blob/master/lib/index.js