web-dev-qa-db-fra.com

Pourquoi mon application heroku node.js donne at = code d'erreur = H10 desc = "App crashed" method = GET path = "/"?

J'essaie d'exécuter mon application de nœud simple sur Heroku.

Voici la structure du répertoire

├── app.js
├── assets
├── blog.html
├── index.html
├── node_modules
└── package.json

Voici mon app.js

let express = require('express'),
    path = require('path');
var app = express();
let server = require('http').Server(app);

app.use(express.static(path.join(__dirname)));

app.get('/', function(req, res, next){
    res.sendStatus(200);
});

app.get('/blog.html', function(req, res,next){
    res.sendFile(path.join(__dirname+"/blog.html"));
});

app.post('/contact', function(req, res, next){

});
server.listen('8000', function() {
    console.log("App is running on port 8000");
});

Voici le package.json

{
  "name": "website",
  "version": "1.0.0",
  "engines" : {
    "node" : "6.3.1",
    "npm" : "3.10.3"
  },
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start" : "node app.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.14.0"
  }
}

Quand je vais à la console, elle imprime à juste titre l'application qui démarre au port xxxx. Mais alors l'application se bloque avec le message suivant

2016-08-10T13:12:49.839138+00:00 app[web.1]: App is running on port xxxx
2016-08-10T13:13:34.944963+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" Host=saras-website.herokuapp.com request_id=28d8705a-d5a4-4aaa-bd8d-4c4c6101fbd4 fwd="106.51.20.181" dyno= connect= service= status=503 bytes=
2016-08-10T13:13:48.295315+00:00 heroku[web.1]: State changed from starting to crashed
2016-08-10T13:13:48.552740+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" Host=saras-website.herokuapp.com request_id=b77e151f-7017-482d-b4ba-15d980534fd7 fwd="106.51.20.181" dyno= connect= service= status=503 bytes=
2016-08-10T13:13:50.163466+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" Host=saras-website.herokuapp.com request_id=1e7b57e5-1056-4cb3-b41f-cd3f11794efe fwd="106.51.20.181" dyno= connect= service= status=503 bytes=

Je ne sais pas ce que je fais mal ici ... L'aide est appréciée

20
Saras Arya

Définir le port comme ceci

ES5:

var port = process.env.PORT || 8000;

Et

server.listen(port, function() {
    console.log("App is running on port " + port);
});

ES6:

const port = process.env.PORT || 8000;

Et

server.listen(port, () => {
    console.log("App is running on port " + port);
});

Cela permet à Heroku de définir le port au moment de l'exécution.

36
alexi2