web-dev-qa-db-fra.com

Heroku me donne un 503 en essayant d'ouvrir mon application Web, fonctionne sur l'hôte local

J'essaye de déployer à heroku mais reçois un 503 même s'il fonctionne sur localhost. Je suis curieux de savoir si mon serveur est correctement configuré, car je suis plus récent en programmation. J'espère que tout le monde pourra me diriger dans la bonne direction pour savoir où regarder ou me faire une suggestion, car j'ai passé d'innombrables heures sur Google depuis maintenant plusieurs semaines.

Ma question principale est de savoir si j'ai correctement configuré mon serveur? Je ne suis pas sûr que mon auditeur travaillera pour heroku et mes .get sont utilisés pour le débogage sur localhost lors de sa configuration initiale. 

Aussi mon projet complet est disponible ici:

https://github.com/dirkdir/DerekDevSite

var express = require('express');
var app = express();
var path = require('path');


app.use(express.static(path.join(__dirname, 'public')));


app.get('/json', function(req, res) {
    console.log("GET the json");
    res
        .status(200)
        .json( {"jsonData" : true} );
});

app.get('/file', function(req, res) {
    console.log("GET the file");
    res
        .status(200)
        .sendFile(path.join(__dirname, 'app.js'));
});



    var server = app.listen(process.env.PORT || 5000), function() {
        var port = server.address().port;
        console.log("Express is working on port " + port);
});

Journaux:

2017-04-24T20: 04: 43.755866 + 00: 00 app [web.1]: dans Module._compile (module.js: 542: 28) 2017-04-24T20: 04: 43.755867 + 00: 00 app [web.1]: at Object.Module._extensions..js (module.js: 579: 10) 2017-04-24T20: 04: 43.755868 + 00: 00 app [web.1] : sur Module.load (module.js: 487: 32) 2017-04-24T20: 04: 43.755868 + 00: 00 app [Web.1]: sur tryModuleLoad (module.js: 446: 12) 2017-04-24T20: 04: 43.755869 + 00: 00 app [web.1]: sur Function.Module._load (module.js: 438: 3) 2017-04-24T20 : 04: 43.755869 + 00: 00 app [web.1]: chez Module.runMain (module.js: 604: 10) 2017-04-24T20: 04: 43.755870 + 00: 00 app [Web. 1]: at run (bootstrap_node.js: 393: 7) 2017-04-24T20: 04: 43.755871 + 00: 00 app [web.1]: au démarrage (bootstrap_node.js: 150: 9) 2017-04-24T20: 04: 43.846556 + 00: 00 heroku [web.1]: l'état a commencé à s'effondrer 2017-04-24T20: 26: 31.826133 + 00: 00 heroku [routeur]: at = code d'erreur = H10 desc = méthode "App crashed" = GET path = "/" Host = derekdyerdev.herokuapp.com request_id = 609ef253-0a56-41ac-b877-1fb242f6f4e1 fwd = "69.36.89.218" dyno = connectez-vous = service = statut = 503 octets = protocole = https 2017-04-24T20: 26: 32.319732 + 00: 00 titres [routeur]: at = code d'erreur = H10 desc = "application bloquée" méthode = GET path = "/ favicon.ico" hôte = derekdyerdev.herokuapp.com request_id = f2a34e62-9765-

5
Derek Dyer

Vous avez le crochet à la ligne 34 de votre fichier app.js au mauvais endroit. Comme la fonction est un rappel, elle doit être dans les paramètres.

Changez ce dernier bloc en ceci:

var server = app.listen(process.env.PORT || 5000, function () {
  var port = server.address().port;
  console.log("Express is working on port " + port);
});

J'ai aussi modifié la Procfile en ceci:

web: node app.js

Après avoir modifié ma capacité à fonctionner localement, je l'ai déployé sur mon Heroku juste pour tester, et tout fonctionne bien :)

4
Lissy

Cela peut être utile à quelqu'un. Mon contenu initial de Procfile était le suivant:

web : node server.js

et après avoir changé cela, cela a fonctionné:

web:node server.js

L'espace entre 'web' et ':' était le problème.

1
Renil Joseph

J'ai eu un problème similaire. Travaillé sur localhost .. pas lorsqu'il est déployé à Heroku. Mon problème? J'avais cloné un projet (node_modules aussi) et mon package.json n'avait pas express, minimist etc., donc il a évidemment échoué. 

Conseil: Lors du déploiement, affichez immédiatement les journaux afin de savoir ce qui se passe tout au long du processus de déploiement. Voir les journaux après son échec ne vous montrera que la fin des journaux ...

Enfin, assurez-vous d’écouter sur le bon port. Je fais ça (comme les autres aussi)

var serverPort = 8080;
. . .
var port = process.env.PORT || serverPort;
1
James