我一直在開發我的第一個Node.js應用程式(實際上,把一些舊代碼以節點爲樂趣和實踐),並正與它託管在Heroku上播放。的Heroku的Node.js應用程序無法啓動
我已經能夠得到應用,因爲它主張用工頭運行順順當當本地,但每當我部署應用的Heroku它開始,但未能滿足查詢。我已經做了一些研究,找不到任何具體的東西,但它在我看來像幾個模塊沒有被Heroku正確安裝?
MySQL數據庫託管在亞馬遜RDS,和我已經跟蹤和複覈的步驟,訪問權限和安全例外和似乎沒有成爲一個問題。
我使用以下模塊,在我的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!
在此先感謝。
更新:
利用帕斯卡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託管的地方(美國西部)和我的RDS數據庫(歐盟西部)之間的可用區域。我已經用Heroku支持提出了這個問題,並且我會得到一個答案來關閉這個問題,並且希望得到一個可行的解決方案或解決方法。
感謝您的建議!我試過你的建議。現在,它導致瀏覽器出現平面應用程序錯誤,並在日誌中出現錯誤。我已經用它更新了這個問題。 – PenguinOfwar