J'ai déployé mon application sur Heroku. C'est une application node.js + express + socket.io et voici le fichier package.json
{
"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 je reçois:
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?
Solution trouvée pour moi ici: Erreur Heroku + node.js (le processus Web n'a pas réussi à se lier à $ PORT dans les 60 secondes du lancement)
Dans mon cas, mon application est tombée en panne car j’ai eu du mal à configurer PORT, au lieu d’utiliser le port défini par heroku dinamicaly, accessible 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);
});
Je viens d'avoir un problème similaire avec mon application, je l'ai eu après une migration de la base de données, après avoir essayé plusieurs options, celle qui m'a aidé était la suivante:
heroku restart
(Utilisation de Heroku toolbelt pour mac)
dans mon cas, l'ajout de process.env.PORT || 3000
à mon script de serveur http, résolu… .. Mon journal heroku a signalé une erreur 'H20' et un statut 503 http.
Dans mon cas, j'ai trouvé la même erreur car il existe une différence de version entre 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
"engines": {
"node": "0.10.41",
"npm": "1.4.29"
}
Ça fonctionne bien :)
Dans mon cas, mon fichier Procfile pointait sur le mauvais fichier (bot.js que j’avais précédemment utilisé). Ainsi, une fois mis à jour, l’erreur avait disparu.
Si vous démarrez localement le serveur de nœud avec 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 alors les résoudre en suivant un autre post ici. J'espère que ça aide à quelqu'un.
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 bloqué mon application une fois qu'elle a été poussée à heroku.
Pour moi, c'était Package.json, il était vide de dépendances même si je pensais les avoir installées .. je devais donc les réinstaller avec l'option --save à la fin et vérifier qu'elles avaient été ajoutées au package.json .. Poussez à nouveau et cela a fonctionné.
J'ai eu une faute de frappe
const PORT = process.env.PORT||'8080';
l'habitude d'être
const PORT = process.env.port||'8080';
J'ai fait face au même problème et aucune des réponses ci-dessus ne m'a aidé . Ce que j'ai fait était de courir:
node --version
et dans le package.json, ajoutez la section moteurs avec la version de votre noeud:
{
"name": "myapp",
"description": "a really cool app",
"version": "1.0.0",
"engines": {
"node": "6.11.1"
}
}
Dans mon cas, j’ai eu cette erreur parce que je refusais d’ajouter un Procfile à mon noeud js app et que mon "main": "app.js" pointait initialement vers un autre fichier js comme main. donc faire ces changements le faire réparer pour moi
J'ai eu ce problème, le seul problème était mon Procfile 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
Dans mon cas, j’ai oublié de définir la base de données env pour le déploiement . Vous pouvez définir env avec cette commande (J'utilise mLab pour le serveur MongoDB)
heroku config: set MONGO_URI = 'mongodb: // adresse'
Le mot de passe contenait un% le cassé pour moi.
Mon port a été défini sur config.httpPort
, lequel est résolu en 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.
Le code d'erreur H10 peut signifier beaucoup de 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, c’était parce que j’ai accidentellement poussé une mise à jour avec Google Analytics, tant en développement qu’en production.
j'utilisais body-Parser qui jette une exception
const bodyParser = require('body-Parser')
//Bodyparser Middleware
app.use(bodyparser.json())
à la place d'utiliser
//Bodyparser Middleware
app.use(express.json())
cela a résolu mon problème
J'ai eu la même erreur ci-dessus que "l'application s'est écrasée" et l'erreur H10 et les journaux de l'application heroku ne montrent pas beaucoup d'informations liées aux raisons du message d'erreur. Ensuite, j'ai redémarré le dynos dans heroku, puis une erreur s'affichait pour indiquer 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.
J'espère que cela sera utile à quelqu'un confronté au même problème.
Fil plus ancien, mais pour moi, je n'ai pas défini mes variables .env
dans la console Heroku.