- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在开发我的第一个 Node.js 应用程序(实际上,为了乐趣和练习而将一些旧代码移至 Node),并正在尝试将其托管在 Heroku 上。
我已经能够使用 foreman 在本地顺利运行应用程序,但是每当我将应用程序部署到 Heroku 时,它就会启动,但无法提供查询服务。我做了一些研究,但找不到任何具体内容,但在我看来,Heroku 似乎没有正确安装几个模块?
MySQL 数据库托管在 Amazon RDS 中,我已经按照并重新检查了步骤、访问权限和安全异常(exception),似乎没有问题。
我正在使用以下模块,在我的 package.json 中定义:
{
"name": "AppName",
"version": "0.0.1",
"dependencies": {
"express": "2.5.x",
"jade": "0.28.1",
"stylus": "0.32.0",
"mysql": "2.0.0-alpha7",
"string": "1.2.*",
"sanitizer": "0.0.*",
"validator": "0.4.8"
},
"engines": {
"node": "0.8.*",
"npm": "1.*.*"
}
}
在我的应用程序文件的顶部调用:
var express = require('express');
var crypto = require('crypto');
var S = require('string');
var mysql = require('mysql');
var sanitizer = require('sanitizer');
var check = require('validator').check,
sanitize = require('validator').sanitize;
错误信息如下:
TypeError: Cannot call method 'query' of undefined
at pool.getConnection.app.get.connection.query.res.render.global_title (/app/web.js:40:14)
at callbacks (/app/node_modules/express/lib/router/index.js:272:11)
at param (/app/node_modules/express/lib/router/index.js:246:11)
at pass (/app/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/app/node_modules/express/lib/router/index.js:280:5)
at Object.middleware [as handle] (/app/node_modules/express/lib/router/index.js:45:10)
at next (/app/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Object.stylus (/app/node_modules/stylus/lib/middleware.js:181:7)
at next (/app/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Object.methodOverride [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:35:5)
以及失败的代码段:
pool.getConnection(function(err, connection) {
app.get('/', function(req, res){
connection.query('QUERY_HERE', function(err, rows, fields) {
if (err) throw console.log(err);
res.render('index', {
global_title: S(site_title).stripTags().s,
title: S(rows[0].title).stripTags().s,
bodytext: sanitize(sanitizer.sanitize(rows[0].content)).xss()
});
connection.end();
});
});
//end connection
});
这是 Heroku 在浏览器或日志中给我的唯一错误,并且构建它似乎没有任何问题。
我在这里有点不知所措,所以希望有人能准确指出我在哪里是个白痴,并让我在联系 Heroku 之前继续前进!
提前致谢。
更新:
使用 Pascal Belloncle 建议的代码更改来捕获日志中的错误会在浏览器中产生应用程序错误,并在日志中产生以下内容:
connection.query(QUERY, function(err, row
at Handshake.Sequence.end (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:66:24)
at Protocol.handleNetworkError (/app/node_modules/mysql/lib/protocol/Protocol.js:230:14)
at Socket.EventEmitter.emit (events.js:126:20)
at Socket._destroy.self.errorEmitted (net.js:328:14)
TypeError: Cannot call method 'query' of undefined
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
at Handshake.Pool.getConnection [as _callback] (/app/node_modules/mysql/lib/Pool.js:35:9)
at Connection._handleNetworkError (/app/node_modules/mysql/lib/Connection.js:145:18)
at /app/web.js:40:15
似乎仍然在同一点崩溃,没有任何有用的错误。
更新2:
错误消息!
2013-02-06T06:32:57+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path=/ host=trash-media.herokuapp.com fwd=31.3.253.10 dyno=web.1 queue=0ms wait=0ms connect=4ms service=21033ms status=503 bytes=0
https://devcenter.heroku.com/articles/error-codes#h13-connection-closed-without-response
更新3:
看到更新 2 中的错误消息并对 RDS 中的安全设置进行一些修改后,现在看来这与托管 Heroku 的位置(us-west)和我的 RDS 数据库之间的可用区域差异有关是(欧盟-西线)。我已经向 Heroku 支持提出了这个问题,如果我得到一个答案,我会用一个答案来结束这个问题,并希望有一个可行的解决方案或解决方法。
最佳答案
检查第一行err的值。如果连接未定义,很可能是因为您有错误。
另外,您应该在每个请求上获得一个新连接,然后返回到池中。
app.get('/', function(req, res){
pool.getConnection(function(err, connection) {
if (err) {
console.error("getConnection", err);
}
// do stuff here
connection.end(); // return connection to the pool
});
});
关于mysql - Heroku Node.js 应用程序无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717103/
我正在尝试使用 Heroku Scheduler 在已部署的 Heroku 应用程序中调用 HTTP 端点,它基本上以固定速率在 Heroku bash 上运行命令。 当我运行 $ heroku ru
我有一个在 Heroku 上运行的应用程序,其中有一些我想不时更改的设置,并且我想使用 Heroku 配置变量来存储这些设置,以便它们持久存在。 我知道我可以从 Heroku 仪表板或 Heroku
我从模板 reagent-frontend 创建了一个 ClojureScript Reagent 应用程序。如何将生产应用程序部署到 Heroku?在为生产构建后(lein package/lein
我正在尝试在 heroku 上添加信用卡,然后消息显示“无法验证您的卡,请稍后再试或联系您的金融机构寻求帮助” 最佳答案 这是因为您的银行拒绝付款。 检查您是否输入了所有正确的详细信息 查看您银行的最
首先为我的英语感到抱歉,因为它不是我的母语,我不习惯它,它可能很难理解。 我正在尝试将我的 spike 应用程序连接到 heroku 以获取长期葡萄糖数据。 我在没有“部署分支”步骤的情况下成功完成了
Ec2 实例小时按小时计算。如果你只是启动和关闭一个实例,它仍然算作一小时。 Heroku 如何处理这个?按分钟还是按小时? 让我们假设我的应用程序使用超过 750 免费 Dyno 小时限制 最佳答案
好奇 heroku 如何创建应用程序名称。应用程序名称通常是英文单词,例如bloom-peaks 或formal-trail。一家大公司的 IT 部门也是如此。是否有用于名称生成的 unix 库? 最
有没有人在 Heroku 上成功使用过 docsplit?它有许多二进制依赖项。我已经搜索过,但没有找到任何人这样做。教程会很棒,但我真的很好奇其他人是否成功。 最佳答案 我的搜索没有找到任何做过这件
我想将一个应用程序部署到需要能够生成加密安全随机数的 heroku。我可以使用哪些熵源? 最佳答案 你的 Heroku dyno 基本上是一个 Ubuntu 服务器虚拟机,所以你应该可以访问 /dev
Heroku 可以显示自定义维护页面: heroku config:set MAINTENANCE_PAGE_URL=http://some_server/my_page.html 这需要某些网站的存
我正在开始使用 Heroku,并担心它是否会因我犯的错误而向我收费。例如,填充数据库超过 5MB。 那么,有没有办法为 Heroku 或通知系统设置计费限制,以便在我超过价格限制时发送通知? 先感谢您
如何更新我的 Heroku ,我的 Windows 终端显示以下内容: » Warning: heroku update available from 7.47.7 to 7.52.0. 请帮忙
我在免费的 Dyno 上运行基于 NodeJS 的应用程序,连接到 mongohq-MongoDB。我想迁移它以使用爱好 Dyno,这样做的动机不仅是避免 sleep 时间,而且是为了实现更高的 HT
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
如何将我的生产数据库拉到 heroku 上的暂存服务器? 我有两个 Remote ,production 和 staging。 来自documentation看来我想运行 heroku pg:copy
我有一个域example.com,我想将它用于位于example.herokuapp.com 的rails-app,我很困惑如何去做。 Heroku says "Zone apex domains (
我有一个 sinatra 应用程序,其中有一个 yml 文件来设置环境变量,我使用此方法调用它们 module MyConfig def config environment = ENV["RA
根据各种因素,一整天中,我的应用程序的负载可能会出现非常极端的增加。 那时,我想自动增加测功机的数量。 我想增加加载时间。因此,如果加载页面需要X倍的时间,请增加测功力。否则,请往下走。 这样的东西存
我想知道使用heroku工具栏在heroku帐户之间进行切换的最佳方法是什么。 我曾经有一个个人的heroku帐户,它是我所有职业性的heroku应用程序的协作者。问题是当我想进行一些对财务有影响的更
是否可以停止部署到当前正在构建的 Heroku ( git push heroku )? 类似 heroku run stopit! 顺便提一句。成功部署后回滚不是我想要的。 最佳答案 首先,安装He
我是一名优秀的程序员,十分优秀!