Erste Heroku-Bereitstellung fehlgeschlagen `Fehlercode = H10`


85

Ich habe meine App für Heroku bereitgestellt. Es ist eine node.js + express + socket.io App und dies ist die package.jsonDatei

{
  "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"
  }
}

Dies ist das Protokoll, das ich bekomme:

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=

Was heißt das?


3
"App abgestürzt" hat die offensichtliche Bedeutung: Ihre App ist abgestürzt. Schauen Sie weiter oben in Ihren Protokollen nach, warum oder heroku restartstarten Sie es erneut, damit Sie sehen können, wie es erneut abstürzt.
Willglynn

Ich habe das gleiche Problem. Wie hast du das behoben?
Martin Schaer

6
Es gibt 1 Antwort auf diese Frage, die bis jetzt bereits 6 positive Stimmen erhalten hat. Bitte wählen Sie diese Antwort als die richtige Antwort auf diese Frage aus.
Rakib

hi @ilyo! Könnten Sie bitte meine Antwort dazu genehmigen? Es ist 7 Jahre alt und hilft immer wieder Menschen :) Danke!
Martin Schaer

Antworten:


186

Hier wurde für mich eine Lösung gefunden: Heroku + node.js-Fehler (Webprozess konnte nicht innerhalb von 60 Sekunden nach dem Start an $ PORT gebunden werden)

In meinem Fall stürzte meine App ab, weil ich den PORT nur schwer einstellen konnte, anstatt den von Heroku Dinamicaly festgelegten Port zu verwenden, auf den zugegriffen werden kann 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
Vielen Dank für diese Lösung. Ich hatte genau das gleiche Problem, und Ihre Antwort löste mein Problem nach einigen Stunden Recherche.
LukyVj

2
Sogar 2 Jahre später half mir dieser Beitrag, als Heroku abstürzte. Danke @Martin Schaer.
Rey Bango

1
Genau das war mein Problem mit Java Spring Boot. Vielen Dank
Mohy Eldeen

2
Heutzutage verwenden die meisten von uns ES6. Die gleiche Antwort kann also auch mit der Pfeilfunktion in ES6 geschrieben werden. app.listen (process.env.PORT || 3000, () => {console.log ("Express-Server überwacht Port% d im% s-Modus", this.address (). port, app.settings.env) ;});
Hemadri Dasari

Dies ist mir passiert, weil versucht wurde, eine Bibliothek zu importieren, die nicht in meiner Datei package.json enthalten war.
Yvan Pearson

46

Ich hatte gerade ein ähnliches Problem mit meiner App. Ich bekam das Problem nach einer Migration der Datenbank. Nachdem ich viele Optionen ausprobiert hatte, half mir Folgendes:

heroku restart

(Verwenden des Heroku-Toolbelt für Mac)


1
Ich bekam den gleichen Fehlercode und meiner funktionierte früher, aber plötzlich passierte dies. Der Befehl "Heroku-Neustart" hat dies für mich geklärt.
Mike

Das gleiche passierte mir, nachdem ich New Relic hinzugefügt hatte. Neustart behoben mein Problem
Kris Hollenbeck

5

In meinem Fall habe ich denselben Fehler gefunden, da auf meinem lokalen Computer ein Versionsunterschied zwischen Knoten und npm besteht, der in der Version package.json definiert ist.

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

wenn ich mit überprüfe

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

wenn ich meine package.json auf aktualisiere

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

Es funktioniert gut :)


5

in meinem Fall das Hinzufügen process.env.PORT || 3000zu meinem http-Server-Skript behoben. Mein Heroku-Protokoll hat den Fehler 'H20' und den http-Status 503 gemeldet.


4

Ich hatte dieses Problem, das einzige Problem war mein Procfile. Mein Procfile war so

web : node index.js

und ich wechselte zu

web:node index.js

Das einzige Problem waren Leerzeichen


3

In meinem Fall zeigte mein Procfile auf die falsche Datei (bot.js, die ich zuvor verwendet habe). Nach der Aktualisierung war der Fehler behoben.


3

Bei Verwendung von hapi18 entferne ich das Feld "Host" und setze den Port auf:

port: process.env.PORT || 5000 hat den Trick gemacht.


2

Überprüfen Sie auch Ihre Datenbankverbindung. Ich habe vergessen, meine Datenbankverbindung von localhost zu ändern, und dies hat meine App zum Absturz gebracht, als sie auf Heroku übertragen wurde.


2

Ich hatte das gleiche Problem und keine der obigen Antworten hat mir geholfen. Was ich getan habe war gelaufen:

node --version

und fügen Sie in der Datei package.json den Engine-Abschnitt mit Ihrer Knotenversion hinzu:

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

2

Alter Thread, aber ich behebe dieses Problem, indem ich die PORT-Konstante auf process.env.PORT || setze

Aus irgendeinem seltsamen Grund wollte es zuerst nach Env suchen.


1

In meinem Fall habe ich diesen Fehler erhalten, weil ich mich weigere, ein Procfile zu meiner Knoten-JS-App hinzuzufügen, und mein "main": "app.js" zeigte ursprünglich auf eine andere js-Datei als main. Wenn ich diese Änderungen mache, wird das für mich behoben


1

Ich hatte einen Tippfehler

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

war früher

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


1

In meinem Fall habe ich vergessen, die Datenbankumgebung für die Bereitstellung festzulegen. Sie können env mit diesem Befehl festlegen (ich verwende mLab für MongoDB-Server).

heroku config: setze MONGO_URI = 'mongodb: // address'


1

Für mich war es Package.json, es war leer von Abhängigkeiten, obwohl ich dachte, ich hätte sie installiert. Also musste ich sie am Ende mit der Option --save neu installieren und überprüfen, ob sie zu package.json hinzugefügt wurden. Und dann Schieben Sie es erneut und es hat funktioniert.


1

Wenn Sie den Knotenserver lokal nodemonwie ich starten und es lokal funktioniert, versuchen Sie es npm start. Nodemon sagte mir keine Fehler, aber npm start erzählte mir viele davon auf verständliche Weise und dann konnte ich sie lösen, indem ich anderen Posts hier folgte. Ich hoffe es hilft jemandem.


1

In meinem Fall gab es keinen Startbefehl im Skriptabschnitt der package.jsonDatei. Als ich die package.jsonDatei mit erstellt npm inithabe, habe ich keinen Startskriptbefehl erstellt. Also ging ich zur package.jsonDatei und fügte unter Skripten einen neuen Eintrag hinzu:

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

Gespeichert und auf Heroku hochgeladen und es hat funktioniert



0

Mein Port wurde so eingestellt, config.httpPortdass er aufgelöst wird 80. Ich habe es dadurch behoben:

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

app.listen(PORT, ...)

Vielen Dank, es hat mich letzte Nacht viele Stunden verschwendet.


0

Der H10-Fehlercode kann viele verschiedene Bedeutungen haben. In meinem Fall war das erste Mal, weil ich nicht wusste, dass Heroku nicht mit Sqlite3 kompatibel ist, das zweite Mal, weil ich versehentlich ein Update mit Google Analytics veröffentlicht habe, das sowohl in der Entwicklung als auch in der Produktion funktioniert.


0

Ich habe den gleichen Fehler wie "App abgestürzt" und H10-Fehler erhalten und die Heroku-App-Protokolle zeigen nicht viele Informationen zu den Gründen für die Fehlermeldung. Dann habe ich die Dynos in Heroku neu gestartet und dann wurde der Fehler angezeigt, dass in einer der index.js-Dateien in meinem Setup eine zusätzliche geschweifte Klammer angegeben ist. Das Problem wurde behoben, sobald es entfernt und die App auf Heroku erneut bereitgestellt wurde.


0

Älterer Thread, aber für mich habe ich meine .envVars nicht in der Heroku-Konsole eingestellt.


0

Ich habe Body-Parser verwendet, die eine Ausnahme auslösen

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

anstelle von verwenden

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

Dies löste mein Problem


0

Ich möchte hier registrieren, was meine Lösung für diesen Fehler war, bei dem es sich um eine einfache Datei handelte, die nicht auf Github aktualisiert wurde.

Ich habe ein Full-Stack-Projekt und meine Dateien sind sowohl im Stammverzeichnis für das Backend als auch im Client für das Frontend strukturiert (ich verwende React.js). Alles war darauf zurückzuführen, dass ich den Client-Ordner fälschlicherweise nur an Github verschoben habe und alle meine Änderungen, bei denen ein Fehler aufgetreten ist (ein Komma in der Instanz eines Objekts in meiner index.js fehlt), im Backend nicht aktualisiert wurden. Da dieses Heroku alle Updates aus dem Github-Repository abruft, konnte ich nicht auf meinen Server zugreifen und der Fehler blieb bestehen. Dann musste ich nur noch festschreiben und in das Stammverzeichnis verschieben und alle Änderungen des Projekts aktualisieren, und alles funktionierte wieder.


0

In meinem Fall hatte ich Code = H10 und Status = 503, weil mein Procfile:

web: node build/server.js

und ich inbegriffen / build in .gitignore


0

Ich habe stundenlang mit dem gleichen Fehler zu kämpfen, aber ich konnte ihn lösen. Ich habe multer und aws-sdk versehentlich als devDependencies installiert, anstatt nur als Abhängigkeiten. Wenn Sie also denselben Fehler haben, überprüfen Sie einfach Ihre package.json-Datei.

Auch ein kleiner Tipp für die Eigenschaft der Engine in 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

Ich habe das Python Django-Framework bereitgestellt, als ich diesen Fehler erhielt, weil ich vergessen habe, web: gunicorn plaindjango.wsgi:application --log-file -stattdessen meinen App-Namen einzugebenplaindjango

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.