Échec du premier déploiement Heroku ʻerror code = H10`


86

J'ai déployé mon application sur Heroku. C'est une application node.js + express + socket.io et c'est le package.jsonfichier

{
  "name": "game_test",
  "author": "Ilya",
  "description": "A test app for our board game",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.6",
    "jade": "*",
    "socket.io" : "*"
  },
 "engines": {
      "node": "0.8.14"
  }
}

Voici le journal que j'obtiens:

heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=game-test-1.herokuapp.com fwd=37.26.146.185 dyno= queue= wait= connect= service= status=503 bytes=

Qu'est-ce que ça veut dire?


4
«Application plantée» a la signification évidente: votre application s'est plantée. Regardez plus haut dans vos journaux pour voir pourquoi, ou heroku restartpour le relancer afin de pouvoir le voir se bloquer à nouveau.
willglynn

J'ai le même problème. Comment l'avez-vous réparé?
Martin Schaer

6
il y a 1 réponse à cette question qui a déjà reçu 6 votes positifs jusqu'à présent ... veuillez sélectionner cette réponse comme réponse correcte à cette question.
Rakib

salut @ilyo! Pourriez-vous approuver ma réponse à ce sujet s'il vous plaît? Il a 7 ans et continue d'aider les gens :) Merci!
Martin Schaer le

Réponses:


192

Solution trouvée pour moi ici: Erreur Heroku + node.js (le processus Web n'a pas pu se lier à $ PORT dans les 60 secondes suivant le lancement)

Dans mon cas, mon application s'est plantée parce que j'avais du mal à configurer le PORT, au lieu d'utiliser le port défini par heroku dinamicaly, auquel vous pouvez accéder avec process.env.PORT

app.listen(process.env.PORT || 3000, function(){
  console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
});

1
Eh bien, merci pour cette solution. J'ai eu exactement le même problème, et votre réponse a résolu mon problème après quelques heures de recherches.
LukyVj

2
Même 2 ans plus tard, ce post m'a aidé quand Heroku s'écroulait. Merci @Martin Schaer.
Rey Bango

1
C'était exactement mon problème avec java spring boot. Merci
Mohy Eldeen

2
De nos jours, la plupart d'entre nous utilisent ES6. Ainsi, la même réponse peut également être écrite dans ES6 en utilisant la fonction de flèche. app.listen (process.env.PORT || 3000, () => {console.log ("Serveur express à l'écoute sur le port% d en mode% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari

Cela m'est arrivé, à cause de la tentative d'importer une bibliothèque qui ne se trouvait pas dans mon fichier package.json.
Yvan Pearson le

47

Je viens d'avoir un problème similaire avec mon application, j'ai eu le problème après une migration de la base de données, après avoir essayé de nombreuses options, celle qui m'a aidé était la suivante:

heroku restart

(Utilisation de la ceinture d'outils Heroku pour Mac)


1
J'avais le même code d'erreur et le mien fonctionnait, mais tout d'un coup, cela a commencé à se produire. La commande "heroku restart" a résolu cela pour moi.
Mike

La même chose m'est arrivée après avoir ajouté New Relic. Le redémarrage a résolu mon problème
Kris Hollenbeck

5

Dans mon cas, j'ai trouvé la même erreur car il y a une différence de version de node et npm sur ma machine locale et définie dans la version package.json.

"engines": {
  "node": "0.8",
  "npm": "1.2.x"
}

quand je vérifie en utilisant

node --version : v0.10.41
npm --version : 1.4.29

quand je mets à jour mon package.json vers

 "engines": {
  "node": "0.10.41",
  "npm": "1.4.29"
}

Ça fonctionne bien :)


5

dans mon cas, ajouter process.env.PORT || 3000à mon script de serveur http, résolu. Mon journal heroku a signalé une erreur «H20» et un statut http 503.


5

J'ai eu ce problème, le seul problème était que mon Procfile était comme ça

web : node index.js

et j'ai changé pour

web:node index.js

le seul problème était les espaces


3

Dans mon cas, mon Procfile pointait vers le mauvais fichier (bot.js que j'avais précédemment utilisé) donc une fois que je l'ai mis à jour, l'erreur a disparu.


3

en utilisant hapi18, je découvre que je prends le champ "host" et que je règle le port sur:

port: process.env.PORT || 5000 a fait l'affaire.


2

Vérifiez également votre connexion à la base de données. J'ai oublié de changer ma connexion à la base de données de localhost et cela a planté mon application une fois qu'elle a été poussée vers heroku.


2

J'ai été confronté à ce même problème et aucune des réponses ci-dessus ne m'a aidé. Ce que j'ai fait, c'est courir:

node --version

et dans le package.json, ajoutez la section moteurs avec votre version de nœud:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}

2

Old Thread, mais je corrige ce problème en définissant la constante PORT sur process.env.PORT ||

Pour une raison étrange, il voulait d'abord rechercher Env.


1

Dans mon propre cas, j'ai eu cette erreur parce que je refuse d'ajouter un Procfile à mon application node js et que mon "main": "app.js" pointait initialement vers un autre fichier js comme main. alors faire ces chnages le réparer pour moi


1

J'ai eu une faute de frappe

const PORT = process.env.PORT||'8080';

était

const PORT = process.env.port||'8080';


1

Dans mon cas, j'ai oublié de définir l'environnement de base de données pour le déploiement. vous pouvez définir env par cette commande (j'utilise mLab pour le serveur MongoDB)

heroku config: set MONGO_URI = 'mongodb: // adresse'


1

Pour moi, c'était Package.json, il était vide des dépendances même si je pensais les avoir installés .. donc j'ai dû les réinstaller avec l'option --save à la fin et vérifier qu'ils avaient été ajoutés au package.json .. et ensuite pousser à nouveau et cela a fonctionné.


1

Si vous démarrez localement le serveur de nœuds nodemon, comme je l'ai fait, et que cela fonctionne localement, essayez npm start. Nodemon ne me disait aucune erreur, mais npm start m'en a dit beaucoup de manière compréhensible et je pourrais ensuite les résoudre en suivant un autre article ici. J'espère que cela aide quelqu'un.


1

Dans mon cas, il n'y avait pas de commande de démarrage dans la section script du package.jsonfichier. Lorsque j'ai créé le package.jsonfichier avec, npm initje n'ai pas créé de commande de script de démarrage. Je suis donc allé au package.jsonfichier, sous scripts j'ai ajouté une nouvelle entrée:

 "scripts": {
    "start": "node index.js"
  },

Je l'ai enregistré et téléchargé sur Heroku et cela a fonctionné



0

Mon port a été défini sur config.httpPortlequel se résout à 80. Je l'ai corrigé en faisant ceci:

const PORT = process.env.PORT || config.httpPort;

app.listen(PORT, ...)

Merci beaucoup, cela m'a fait perdre beaucoup d'heures hier soir.


0

Le code d'erreur H10 peut signifier de nombreuses choses différentes. Dans mon cas, la première fois, c'était parce que je ne savais pas que Heroku n'était pas compatible avec Sqlite3, la deuxième fois parce que j'avais accidentellement poussé une mise à jour avec Google Analytics travaillant en développement ainsi qu'en production.


0

J'ai eu la même erreur ci-dessus que "l'application a planté" et l'erreur H10 et les journaux de l'application heroku ne montrent pas beaucoup d'informations liées aux raisons du msg d'erreur. Ensuite, j'ai redémarré les dynos dans heroku, puis il a montré l'erreur indiquant une accolade supplémentaire dans l'un des fichiers index.js de ma configuration. Le problème a été résolu une fois qu'il a été supprimé et redéployé l'application sur heroku.


0

Fil plus ancien, mais pour moi, je n'ai pas défini mes .envvars dans la console Heroku.


0

J'utilisais body-Parser qui jette une exception

const bodyParser = require('body-Parser')    
//Bodyparser Middleware
app.use(bodyparser.json())

au lieu d'utiliser

    //Bodyparser Middleware
    app.use(express.json())

cela a résolu mon problème


0

Je veux enregistrer ici quelle a été ma solution à cette erreur qui était un simple fichier non mis à jour sur Github.

J'ai un projet full stack et mes fichiers sont structurés à la fois dans le répertoire racine pour le backend et le client pour le frontend (j'utilise React.js). Tout se résumait au fait que je poussais par erreur le dossier client uniquement vers Github et que toutes mes modifications qui comportaient une erreur (il manquait une virgule dans l'instance d'un objet dans mon index.js) n'étaient pas mises à jour dans le backend. Puisque cet Heroku récupère toutes les mises à jour du référentiel Github, je n'ai pas pu accéder à mon serveur et l'erreur a persisté. Ensuite, tout ce que j'avais à faire était de valider et de pousser vers le répertoire racine et de mettre à jour toutes les modifications du projet et tout est revenu au travail.


0

Dans mon cas, j'avais le code = H10 et le statut = 503 car mon Procfile:

web: node build/server.js

et j'ai inclus / construit dans .gitignore


0

Je lutte avec la même erreur pendant des heures, mais j'ai pu la résoudre. J'ai installé multer et aws-sdk en tant que devDependencies par erreur, au lieu de simples dépendances. Donc, quiconque a la même erreur, revérifiez simplement votre fichier package.json.

Aussi, une petite astuce pour la propriété du moteur dans package.json.

enter code here
//The greater or equal operators will make sure that you use the right node 
//version 
//even if your current node is greater version than npm node

"engines": {
"node": ">= 0.8.14"
},


//insted of
"engines": {
  "node": "0.8.14"
}

0

J'étais en train de déployer le framework python Django lorsque j'ai eu cette erreur car j'ai oublié de mettre le nom de mon application web: gunicorn plaindjango.wsgi:application --log-file -au lieu deplaindjango

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.