저는 처음 Node.js 응용 프로그램을 개발했습니다. 실제로 재미 있고 연습 할 수 있도록 이전 코드를 Node 노드로 옮겨서 Heroku에서 호스팅하고 있습니다.Heroku Node.js 응용 프로그램이 시작되지 않습니다.
foreman을 사용하여 로컬에서 실행중인 응용 프로그램을 얻을 수 있었지만 응용 프로그램을 Heroku에 배포 할 때마다 시작되지만 쿼리를 제공하지 못합니다. 몇 가지 조사를 해본 결과 을 찾지 못했지만 몇 가지 모듈이 Heroku에 의해 올바르게 설치되지 않은 것처럼 보입니다?
MySQL 데이터베이스는 Amazon 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가 브라우저 나 로그에서 제공하는 유일한 오류이며, 구성하는 데 문제가없는 것 같습니다.
나는 여기에서 상실하고있다. 그래서 누군가가 내가 바보 인 곳을 지적 할 수 있기를 바란다.
미리 감사드립니다.
업데이트 : 로그에 오류를 캡처 파스칼 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 : 그것은 차이와 관련이 같은
일부 RDS의 보안 설정 손보는 업데이트 2에서 오류 메시지가 표시 및 수행 한 후이 지금 보이는 Heroku가 호스팅되는 곳 (us-west)과 내 RDS DB가있는 곳 (eu-west) 사이의 가용성 영역. 나는 Heroku 지원을 통해 그것을 제기했으며, 대답을 얻으면이 질문을 닫을 것이고, 잘하면 해결 방법이나 해결 방법을 얻을 수있을 것이다.
조언 해 주셔서 감사합니다. 나는 네가 제안한 것을 시도했다. 이제 로그에 오류가있어 브라우저에서 플랫 응용 프로그램 오류가 발생합니다. 나는 그것으로 질문을 업데이트했다. – PenguinOfwar