Essaie de connecter mon node.js pour Heroku base de données PostgreSQL. Suivant Heroku Postgres tutoriel
Je suis la suite de ces deux Heroku tutoriels:
https://devcenter.heroku.com/articles/getting-started-with-nodejs
et
https://devcenter.heroku.com/articles/heroku-postgresql
J'ai l' 'bonjour le monde' application de travail. Mais j'obtiens une erreur lorsque j'ajoute le node.js code pour se connecter à postgreSQL.
Mon colis.json
{
"name": "node-example",
"version": "0.0.1",
"dependencies": {
"pg": "2.x",
"express": "3.1.x"
},
"engines": {
"node": "0.10.x",
"npm": "1.2.x"
}
}
Mon web.js
var express = require("express");
var app = express();
app.use(express.logger());
app.get('/', function(request, response) {
response.send('Hello World!');
});
var port = process.env.PORT || 5000;
app.listen(port, function() {
console.log("Listening on " + port);
});
var pg = require('pg');
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
client.query('SELECT * FROM your_table', function(err, result) {
done();
if(err) return console.error(err);
console.log(result.rows);
});
});
Mon Heroku base de données postgres fonctionne bien et je peux me connecter directement avec
heroku pg:psql
Voici mes logs:
2013-09-29T13:13:34.777156+00:00 heroku[web.1]: State changed from starting to up
2013-09-29T13:13:34.784018+00:00 app[web.1]:
2013-09-29T13:13:34.787193+00:00 app[web.1]: events.js:72
2013-09-29T13:13:34.787469+00:00 app[web.1]: throw er; //Unhandled 'error' event
2013-09-29T13:13:34.787642+00:00 app[web.1]: ^
2013-09-29T13:13:34.790791+00:00 app[web.1]: error: relation "junk" does not exist
2013-09-29T13:13:34.790791+00:00 app[web.1]: at Connection.parseE (/app/node_modules/pg/lib/connection.js:546:11)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at Connection.parseMessage (/app/node_modules/pg/lib/connection.js:375:17)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at null.<anonymous> (/app/node_modules/pg/lib/connection.js:92:20)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at Socket.EventEmitter.emit (events.js:95:17)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at Socket.<anonymous> (_stream_readable.js:746:14)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at Socket.EventEmitter.emit (events.js:92:17)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at emitReadable_ (_stream_readable.js:408:10)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at emitReadable (_stream_readable.js:404:5)
2013-09-29T13:13:34.790791+00:00 app[web.1]: at readableAddChunk (_stream_readable.js:165:9)
2013-09-29T13:13:34.790968+00:00 app[web.1]: at Socket.Readable.push (_stream_readable.js:127:10)
2013-09-29T13:13:36.511975+00:00 heroku[web.1]: Process exited with status 8
2013-09-29T13:13:36.527681+00:00 heroku[web.1]: State changed from up to crashed
2013-09-29T13:21:22+00:00 heroku[slug-compiler]: Slug compilation started
2013-09-29T13:21:38+00:00 heroku[slug-compiler]: Slug compilation finished
2013-09-29T13:21:39.239935+00:00 heroku[web.1]: State changed from crashed to starting
2013-09-29T13:21:40.589773+00:00 heroku[web.1]: Starting process with command `node web.js`
2013-09-29T13:21:41.345806+00:00 app[web.1]: Listening on 20977
2013-09-29T13:21:41.368323+00:00 app[web.1]: { [error: relation "your_table" does not exist]
2013-09-29T13:21:41.368323+00:00 app[web.1]: length: 101,
2013-09-29T13:21:41.368323+00:00 app[web.1]: detail: undefined,
2013-09-29T13:21:41.368323+00:00 app[web.1]: severity: 'ERROR',
2013-09-29T13:21:41.368323+00:00 app[web.1]: hint: undefined,
2013-09-29T13:21:41.368323+00:00 app[web.1]: position: '15',
2013-09-29T13:21:41.368323+00:00 app[web.1]: code: '42P01',
2013-09-29T13:21:41.368323+00:00 app[web.1]: name: 'error',
2013-09-29T13:21:41.368323+00:00 app[web.1]: internalPosition: undefined,
2013-09-29T13:21:41.368512+00:00 app[web.1]: where: undefined,
2013-09-29T13:21:41.368512+00:00 app[web.1]: file: 'parse_relation.c',
2013-09-29T13:21:41.368512+00:00 app[web.1]: line: '864',
2013-09-29T13:21:41.368323+00:00 app[web.1]: internalQuery: undefined,
2013-09-29T13:21:41.368512+00:00 app[web.1]: routine: 'parserOpenTable' }
2013-09-29T13:21:41.938926+00:00 heroku[web.1]: State changed from starting to up
2013-09-29T13:21:38.600520+00:00 heroku[api]: Deploy 95a0a35 by *********@gmail.com
2013-09-29T13:21:38.625733+00:00 heroku[api]: Release v17 created by *******@gmail.com
2013-09-29T13:22:08.383050+00:00 heroku[router]: at=info method=GET path=/ host=pure-lake-7106.herokuapp.com fwd="58.7.243.156" dyno=web.1 connect=3ms service=6ms status=200 bytes=12
2013-09-29T13:22:08.383327+00:00 app[web.1]: - - - [Sun, 29 Sep 2013 13:22:08 GMT] "GET /HTTP/1.1" 200 12 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36"
2013-09-29T13:22:10.046808+00:00 app[web.1]: - - - [Sun, 29 Sep 2013 13:22:10 GMT] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36"
2013-09-29T13:22:10.049179+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=pure-lake-7106.herokuapp.com fwd="58.7.243.156" dyno=web.1 connect=1ms service=3ms status=404 bytes=34
2013-09-29T13:29:40+00:00 heroku[slug-compiler]: Slug compilation started
2013-09-29T13:30:07.484077+00:00 heroku[api]: Deploy a2cc795 by xxxxxxxxxxx@gmail.com
2013-09-29T13:30:07.515481+00:00 heroku[api]: Release v18 created by xxxxxxxxx@gmail.com
2013-09-29T13:30:07+00:00 heroku[slug-compiler]: Slug compilation finished
2013-09-29T13:30:08.016355+00:00 heroku[web.1]: State changed from up to starting
2013-09-29T13:30:10.017792+00:00 heroku[web.1]: Starting process with command `node web.js`
2013-09-29T13:30:10.099473+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-09-29T13:30:11.008770+00:00 app[web.1]: Listening on 47344
2013-09-29T13:30:11.065531+00:00 app[web.1]: name: 'error',
2013-09-29T13:30:11.065531+00:00 app[web.1]: length: 101,
2013-09-29T13:30:11.065531+00:00 app[web.1]: severity: 'ERROR',
2013-09-29T13:30:11.065531+00:00 app[web.1]: code: '42P01',
2013-09-29T13:30:11.065531+00:00 app[web.1]: detail: undefined,
2013-09-29T13:30:11.065531+00:00 app[web.1]: position: '15',
2013-09-29T13:30:11.065531+00:00 app[web.1]: { [error: relation "your_table" does not exist]
2013-09-29T13:30:11.065531+00:00 app[web.1]: internalPosition: undefined,
2013-09-29T13:30:11.065531+00:00 app[web.1]: internalQuery: undefined,
2013-09-29T13:30:11.065840+00:00 app[web.1]: where: undefined,
2013-09-29T13:30:11.065840+00:00 app[web.1]: file: 'parse_relation.c',
2013-09-29T13:30:11.065840+00:00 app[web.1]: line: '864',
2013-09-29T13:30:11.065840+00:00 app[web.1]: routine: 'parserOpenTable' }
2013-09-29T13:30:11.065531+00:00 app[web.1]: hint: undefined,
2013-09-29T13:30:11.482704+00:00 heroku[web.1]: State changed from starting to up
2013-09-29T13:30:11.651117+00:00 heroku[web.1]: Process exited with status 143
2013-09-29T13:30:17.729604+00:00 app[web.1]: - - - [Sun, 29 Sep 2013 13:30:17 GMT] "GET /HTTP/1.1" 200 12 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36"
2013-09-29T13:30:19.361615+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=pure-lake-7106.herokuapp.com fwd="58.7.243.156" dyno=web.1 connect=1ms service=3ms status=404 bytes=34
2013-09-29T13:30:19.364457+00:00 app[web.1]: - - - [Sun, 29 Sep 2013 13:30:19 GMT] "GET /favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36"
2013-09-29T13:30:17.728815+00:00 heroku[router]: at=info method=GET path=/ host=pure-lake-7106.herokuapp.com fwd="58.7.243.156" dyno=web.1 connect=1ms service=19ms status=200 bytes=12
2013-09-29T13:32:28+00:00 heroku[slug-compiler]: Slug compilation started
2013-09-29T13:32:43.338858+00:00 heroku[api]: Deploy d4cf2ba by xxxxxxxx@gmail.com
2013-09-29T13:32:43.359317+00:00 heroku[api]: Release v19 created by xxxxxxxx@gmail.com
2013-09-29T13:32:43+00:00 heroku[slug-compiler]: Slug compilation finished
2013-09-29T13:32:43.746015+00:00 heroku[web.1]: State changed from up to starting
2013-09-29T13:32:45.354842+00:00 heroku[web.1]: Starting process with command `node web.js`
2013-09-29T13:32:46.098651+00:00 app[web.1]: Listening on 37156
2013-09-29T13:32:47.127328+00:00 app[web.1]: { [error: relation "your_table" does not exist]
2013-09-29T13:32:47.127328+00:00 app[web.1]: code: '42P01',
2013-09-29T13:32:47.127328+00:00 app[web.1]: name: 'error',
2013-09-29T13:32:47.127328+00:00 app[web.1]: length: 101,
2013-09-29T13:32:47.127328+00:00 app[web.1]: hint: undefined,
2013-09-29T13:32:47.127328+00:00 app[web.1]: position: '15',
2013-09-29T13:32:47.127328+00:00 app[web.1]: severity: 'ERROR',
2013-09-29T13:32:47.127328+00:00 app[web.1]: detail: undefined,
2013-09-29T13:32:47.127561+00:00 app[web.1]: where: undefined,
2013-09-29T13:32:47.127561+00:00 app[web.1]: routine: 'parserOpenTable' }
2013-09-29T13:32:47.127328+00:00 app[web.1]: internalPosition: undefined,
2013-09-29T13:32:47.127328+00:00 app[web.1]: internalQuery: undefined,
2013-09-29T13:32:47.127561+00:00 app[web.1]: file: 'parse_relation.c',
2013-09-29T13:32:47.127561+00:00 app[web.1]: line: '864',
2013-09-29T13:32:47.197293+00:00 heroku[web.1]: State changed from starting to up
2013-09-29T13:32:50.505267+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-09-29T13:32:53.246120+00:00 heroku[web.1]: Process exited with status 143
2013-09-29T14:39:50.833246+00:00 heroku[web.1]: Idling
2013-09-29T14:39:52.828292+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2013-09-29T14:39:54.545662+00:00 heroku[web.1]: Process exited with status 143
2013-09-29T14:39:54.559151+00:00 heroku[web.1]: State changed from up to down
- Je obtenir ce erroe quand je fais un contremaître commencer
p$ foreman start
12:39:41 web.1 | started with pid 13983
12:39:41 web.1 | Listening on 5000
12:39:41 web.1 | /home/roland/github/heroku_app/web.js:18
12:39:41 web.1 | client.query('SELECT * FROM your_table', function(err, result) {
12:39:41 web.1 | ^
12:39:41 web.1 | TypeError: Cannot call method 'query' of null
12:39:41 web.1 | at /home/roland/github/heroku_app/web.js:18:10
12:39:41 web.1 | at /home/roland/github/heroku_app/node_modules/pg/lib/pool.js:54:25
12:39:41 web.1 | at /home/roland/github/heroku_app/node_modules/pg/node_modules/generic-pool/lib/generic-pool.js:271:11
12:39:41 web.1 | at /home/roland/github/heroku_app/node_modules/pg/lib/pool.js:27:26
12:39:41 web.1 | at null.<anonymous> (/home/roland/github/heroku_app/node_modules/pg/lib/client.js:169:9)
12:39:41 web.1 | at EventEmitter.emit (events.js:95:17)
12:39:41 web.1 | at null.<anonymous> (/home/roland/github/heroku_app/node_modules/pg/lib/connection.js:97:12)
12:39:41 web.1 | at Socket.EventEmitter.emit (events.js:95:17)
12:39:41 web.1 | at Socket.<anonymous> (_stream_readable.js:746:14)
12:39:41 web.1 | at Socket.EventEmitter.emit (events.js:92:17)
12:39:41 web.1 | exited with code 8
12:39:41 system | sending SIGTERM to all processes
SIGTERM received
MODIFIER ma console.les journaux;
var express = require("express");
var app = express();
app.use(express.logger());
app.get('/', function(request, response) {
response.send('Hello World!');
console.log("hello roland");
});
var port = process.env.PORT || 5000;
app.listen(port, function() {
console.log("Listening on " + port);
});
var pg = require('pg');
pg.connect(process.env.DATABASE_URL, function(err, client, done) {
console.log(err+"!!!!!!!!!!!!!!!");
client.query('SELECT * FROM your_table', function(err, result) {
done();
if(err) return console.error(err);
console.log(result.rows);
});
});
Dans votre
Je ne sais pas, je n'ai pas écrit ce code, mais collé directement de l'tutoriel. Dois-je faire une console.log(err): ? et à voir.
Par tous les moyens...
J'obtiens: console.log(err+"!!!!!!"); ^ ReferenceError: l'erreur n'est pas défini
poster votre code. Il devrait être. Probablement mettre le journal de la console dans un mauvais endroit.
client.connect()
de rappel, qu'est-ce que la valeur de err
? Il semble que cela fonctionne au moins une partie du temps, depuis your_table
est interrogé (comme cela est évident à partir de la pg de journaux). Il n'existe pas, d'ailleurs.Je ne sais pas, je n'ai pas écrit ce code, mais collé directement de l'tutoriel. Dois-je faire une console.log(err): ? et à voir.
Par tous les moyens...
J'obtiens: console.log(err+"!!!!!!"); ^ ReferenceError: l'erreur n'est pas défini
poster votre code. Il devrait être. Probablement mettre le journal de la console dans un mauvais endroit.
OriginalL'auteur rolandnsharp | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
C'est Heroku du problème. Le "processus.env.DATABASE_URL variable" ils vous disent d'utiliser dans pg.connect ne fonctionne pas.
Un simple
Montrera que cette variable n'est pas définie.
Jusqu'à ce que Heroku propose un correctif, vous pouvez coder l'URL de connexion comme premier argument à la pg.connect().
Pour trouver vos informations d'identification, vous pouvez aller à votre application PostgreSQL ajouter-sur les paramètres de connexion par le biais de http://heroku.com.
La nouvelle page.méthode de connexion ressemble
config:set
définit la variable pour le dyno. Pour les variables locales de la.env
fichier peut être utilisé: devcenter.heroku.com/articles/...OriginalL'auteur DJ_
Si les réponses ci-dessus tombent un peu court pour n'importe qui (pour moi) - essayer d'ajouter
?ssl=true
à la fin de votre DATABASE_URL variable d'environnement. De crédit à l'auteur de cette réponse. Le meilleur de la chance.Cela a fonctionné pour moi aussi!
OriginalL'auteur njenson
Vous pouvez utiliser:
heroku pg:info
commande pour afficher la liste de vos bases de données. Vous y trouverez exactement databse url que vous pouvez utiliser dans votre application, il devrait être quelque chose comme ça:HEROKU_POSTGRESQL_DBNAME_URL
. Cette url peut être utilisé dans node.js application:OriginalL'auteur Rafal Spacjer
Essayer
heroku pg:promote
comme suit:heroku pg:promote HEROKU_POSTGRESQL_WHATEVER_URL
Cela devrait être le DATABASE_URL variable sur Heroku.
OriginalL'auteur Fox Wilson
Je recommande de ne pas coder en dur l'adresse URL, parce que vous pourriez être prêt à créer de la mise en scène application avec le même code.
Vous pouvez utiliser
nconf
à assurez-vous que Heroku de variables d'environnement (stockées dans un.env
fichier, lire parforeman
lors du lancement de votre application avecProcfile
).Vous pouvez créer un
config.js
fichier de collecte de vos variables:Puis l'utiliser pour récupérer vos variables:
Notez que vous pouvez utiliser exactement la même configuration que Heroku sur votre machine locale. Tous vous avez besoin est de créer un
Procfile
pour décrire la façon de démarrer votre serveur et un.env
fichier des variables locales (par exemple, votre base de données postgresql locale url). Vérifier https://github.com/strongloop/node-foremanOriginalL'auteur ocolot