2014-04-25 3 views
3

Je développe l'application node.js sur heroku. Pour l'instant, il fonctionne sur un seul (libre) dyno. Pour une raison quelconque, mon application s'est brisée et maintenant elle plante tout le temps (je l'ai observé après avoir ajouté NewRelic et Librato addons - app est en quelque sorte redémarré lors de l'ajout de ces addons) - app s'est écrasé pour la première fois après l'un de ces addons ont été ajoutés. J'ai donc enlevé les deux addons mais le problème restait toujours. Je voulais vérifier ce qui est erroné et je commentais mon code app et remplacé par exemple simple à partir du Web:Heroku - plantage tout le temps

index.js

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(process.env.PORT); 
console.log('Server running at http://127.0.0.1:1337/'); 

Procfile

web: node index.js 

moteurs à packages.json (noeud installé par heroku est 0.10.26)

"engines": { 
    "node": "0.10.x" 
}, 

Ce code fonctionne sur mon pc (testé avec contremaître). Lorsque je tente de le déployer à des plantages d'applications Heroku - voici le journal:

2014-04-25T09:43:42+00:00 heroku[slug-compiler]: Slug compilation started 
2014-04-25T09:43:47.850609+00:00 heroku[api]: Release v30 created by xxx 
2014-04-25T09:43:47.850538+00:00 heroku[api]: Deploy 562babb by xxx 
2014-04-25T09:43:47+00:00 heroku[slug-compiler]: Slug compilation finished 
2014-04-25T09:43:48.588089+00:00 heroku[web.1]: State changed from crashed to starting 
2014-04-25T09:43:55.655057+00:00 heroku[web.1]: Starting process with command `node index.js` 
2014-04-25T09:43:57.931274+00:00 heroku[web.1]: Process exited with status 8 
2014-04-25T09:43:57.945393+00:00 heroku[web.1]: State changed from starting to crashed 

lorsque je tente de heroku restart:

2014-04-25T09:44:43.071357+00:00 heroku[web.1]: State changed from crashed to starting 
2014-04-25T09:44:51.834860+00:00 heroku[web.1]: Starting process with command `node index.js` 
2014-04-25T09:44:54.250631+00:00 heroku[web.1]: State changed from starting to crashed 
2014-04-25T09:44:54.235545+00:00 heroku[web.1]: Process exited with status 8 

Cela me rend fou - j'ai déployé beaucoup d'applications de nœud à Heroku qui sont en cours de production et n'a jamais eu de tels problèmes - que se passe-t-il ???


Lorsque j'ai changé la version du moteur de noeud à 0.10.20 (je me sers de ce v localy) puis l'application a commencé et fonctionnait correctement, mais quand je l'ai heroku restart il sombré à nouveau ...

State changed from up to starting 
2014-04-25T10:10:12.990317+00:00 heroku[web.1]: Stopping all processes with SIGTERM 
2014-04-25T10:10:15.145758+00:00 heroku[web.1]: Process exited with status 143 
2014-04-25T10:10:16.151380+00:00 heroku[web.1]: Starting process with command `node index.js` 
2014-04-25T10:10:18.905637+00:00 heroku[web.1]: Process exited with status 8 
2014-04-25T10:10:18.929730+00:00 heroku[web.1]: State changed from starting to crashed 

après la deuxième application de redémarrage a été up et runing à nouveau, et après la troisième reprise, il est écrasé à nouveau (il se bloque toujours/sort avec le statut 8).

Répondre

1

Le problème pourrait être sur Heroku lui-même. Un rapport d'incident a été créé il y a environ une heure, mais le problème persiste: https://status.heroku.com/incidents/614

En attendant, vous souhaiterez peut-être revenir à la version précédente de votre application via HerokuDashboard.

+0

Essayé de rollback et question reste encore :(des thats fou - il semble que ce soit un problème heroku -> +1 pour signaler un lien vers un incident heroku – user606521

0

Le problème est que vous essayez de démarrer sur un port non valide. Heroku ne définit pas votre variable PORT dans l'environnement (vous pouvez le voir si vous exécutez heroku config). Votre variable PORT doit être utilisée explicitement dans le fichier Procfile.

vous devriez faire quelque chose comme ça dans votre Procfile:

web: node index.js $PORT 

ensuite modifier votre code index.js dire:

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(process.argv[2]); 
console.log('Server running at http://127.0.0.1:' + process.argv[2]); 
+0

Ce n'est pas vrai - en fait, heroku définit 'process.env '.PORT' - c'était un problème d'heroku qui est résolu maintenant et tout fonctionne bien. – user606521

+0

le $ PORT a résolu mon problème merci beaucoup – TimCodes

Questions connexes