Node.js/Express sur heroku
Je suis en train de tester node.js ces derniers jours, et notamment le framework web Express – Fan de l’hébergeur Heroku, d’autant plus depuis qu’il est possible d’avoir des applications node.js (entre autres), j’ai souhaité installer une application de test en suivant ce tutorial – et tout n’a pas fonctionné du premier coup
En effet, pour créer mon squelette d’application « zen-hw », j’ai utilisé la commande
[julien.newton: zen-hw]$ express
qui crée par défaut une arborescence d’application Express – or par défaut le fichier app.js lancera la webapp via la commande
app.listen(3000);
qui fonctionne parfaitement en local (sauf si pow est installé, mais c’est une autre histoire) mais pas sur heroku, avec un beau crash de l’application visible via:
[julien.newton: zen-hw]$ heroku ps Process State Command ------------ ------------------ ------------------------------ web.1 crashed for 8s node app.js
Pour éviter ce point, il suffit de modifier app.js pour chaque application Express créée via la commande express pour utiliser process.env.PORT, ce qui donne à la fin du fichier:
var port = process.env.PORT || 3210; app.listen(port, function(){ console.log("Listening on " + port); });
et voilà l’application fonctionne sous heroku !