Pierwsze wdrożenie Heroku nie powiodło się `kod błędu = H10`

86

Wdrożyłem moją aplikację w Heroku. Jest to aplikacja node.js + express + socket.io i to jest package.jsonplik

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

Oto dziennik, który otrzymuję:

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=

Co to znaczy?

ilyo
źródło
4
„Awaria aplikacji” ma oczywiste znaczenie: awaria aplikacji. Zajrzyj dalej w dziennikach, aby zobaczyć, dlaczego, lub heroku restarturuchom go ponownie, aby móc ponownie obejrzeć awarię.
willglynn
Mam ten sam problem. Jak to naprawiłeś?
Martin Schaer,
6
jest 1 odpowiedź na to pytanie, która do tej pory otrzymała już 6 głosów za ... proszę wybrać tę odpowiedź jako poprawną odpowiedź na to pytanie.
Rakib,
cześć @ilyo! Czy mógłbyś zatwierdzić moją odpowiedź w tej sprawie? Ma 7 lat i wciąż pomaga ludziom :) Dzięki!
Martin Schaer

Odpowiedzi:

192

Znalazłem rozwiązanie dla mnie tutaj: Błąd Heroku + node.js (proces sieciowy nie mógł połączyć się z $ PORT w ciągu 60 sekund od uruchomienia)

W moim przypadku moja aplikacja uległa awarii, ponieważ trudno było ustawić PORT, zamiast używać portu, który ustawia dinamicaly heroku, do którego można uzyskać dostęp za pomocą 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);
});
Martin Schaer
źródło
1
Cóż, dziękuję za to rozwiązanie. Miałem dokładnie ten sam problem, a Twoja odpowiedź rozwiązała mój problem po kilku godzinach poszukiwań.
LukyVj
2
Nawet 2 lata później ten post pomógł mi, gdy Heroku się zawiesił. Dzięki @Martin Schaer.
Rey Bango
1
Dokładnie to był mój problem z bootowaniem sprężyny java. Dzięki
Mohy Eldeen
2
Obecnie większość z nas używa ES6. Taką samą odpowiedź można również zapisać w ES6 za pomocą funkcji strzałki. app.listen (process.env.PORT || 3000, () => {console.log ("Serwer Express nasłuchuje na porcie% d w trybie% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari,
Zdarzyło mi się to, co było spowodowane próbą zaimportowania biblioteki, której nie było w moim pliku package.json.
Yvan Pearson
47

Właśnie miałem podobny problem z moją aplikacją, mam problem po migracji bazy danych, po wypróbowaniu wielu opcji, pomogło mi to:

heroku restart

(Korzystanie z paska narzędzi Heroku dla systemu Mac)

clarenswd
źródło
1
Otrzymywałem ten sam kod błędu i mój działał, ale to nagle zaczęło się dziać. Polecenie „heroku restart” wyjaśniło to dla mnie.
Mike,
To samo stało się ze mną po dodaniu New Relic. Restart naprawił mój problem
Kris Hollenbeck
5

W moim przypadku znalazłem ten sam błąd, ponieważ istnieje różnica wersji węzła i npm na moim komputerze lokalnym i zdefiniowana w wersji package.json.

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

kiedy sprawdzam za pomocą

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

kiedy zaktualizuję plik package.json do

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

To działa dobrze :)

Mahesh Singh Chouhan
źródło
5

w moim przypadku rozwiązane dodanie process.env.PORT || 3000do mojego skryptu serwera http. Mój dziennik heroku zgłosił błąd „H20” i stan 503 http.

Ewertom Moraes
źródło
5

Miałem ten problem, jedynym problemem było to, że mój Procfile wyglądał tak

web : node index.js

i zmieniłem na

web:node index.js

jedynym problemem były spacje

Arian Nargesi
źródło
3

W moim przypadku mój plik Procfile wskazywał na niewłaściwy plik (bot.js, którego wcześniej użyłem), więc po zaktualizowaniu błąd zniknął.

Sina Meraji
źródło
3

po użyciu hapi18 znajduję pole „host” i ustawiam port na:

port: process.env.PORT || 5000 załatwił sprawę.

littlebotrj
źródło
2

Sprawdź także połączenie z bazą danych. Zapomniałem zmienić połączenie z bazą danych z lokalnego hosta i spowodowało to awarię mojej aplikacji po jej przekazaniu do heroku.

lindsaymacvean
źródło
2

Zmierzyłem się z tym samym problemem i żadna z powyższych odpowiedzi nie pomogła mi. To, co zrobiłem, to:

node --version

aw pliku package.json dodaj sekcję silników z wersją Twojego węzła:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}
Martin De Simone
źródło
2

Stary wątek, ale rozwiązuję ten problem, ustawiając stałą PORT na process.env.PORT ||

Z jakiegoś dziwnego powodu chciał najpierw przeszukać Env.

Isaac Frank
źródło
1

W moim przypadku otrzymałem ten błąd, ponieważ odmawiam dodania Procfile do mojej aplikacji node js, a mój „main”: „app.js” początkowo wskazywał na inny plik js jako główny. więc robiąc te zmiany, napraw to dla mnie

Baba leśna
źródło
1

Miałem literówkę

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

był

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

Omar
źródło
1

W moim przypadku zapomniałem ustawić środowisko bazy danych do wdrożenia. możesz ustawić env za pomocą tego polecenia (używam mLab dla serwera MongoDB)

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

minjun youn
źródło
1

Dla mnie był to Package.json, który był pusty z zależności, mimo że myślałem, że je zainstalowałem ... więc musiałem ponownie je zainstalować z opcją --save na końcu i sprawdzić, czy zostały dodane do package.json ... a następnie naciśnij go ponownie i zadziałało.

rzymski
źródło
1

Jeśli lokalnie uruchamiasz serwer węzłów nodemon, tak jak ja, i działa lokalnie, spróbuj npm start. Nodemon nie mówił mi żadnych błędów, ale npm start podał mi wiele z nich w zrozumiały sposób i mogłem je rozwiązać, śledząc kolejne posty tutaj. Mam nadzieję, że komuś to pomoże.

Erik
źródło
1

W moim przypadku nie było polecenia start w sekcji script package.jsonpliku. Kiedy tworzyłem package.jsonplik za pomocą npm init, nie utworzyłem polecenia startowego skryptu. Poszedłem więc do package.jsonpliku, pod skryptami dodałem nowy wpis:

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

Zapisałem go i przesłano do Heroku i zadziałało

Mahmoud Awad
źródło
0

Hasło zawierało% zepsute dla mnie.

Jack Stone
źródło
0

Mój port został ustawiony, na config.httpPortktóry jest ustawiony na 80. Naprawiłem to, robiąc to:

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

app.listen(PORT, ...)

Wielkie dzięki, zmarnowało mi to wiele godzin ostatniej nocy.

Tamal Anwar Chowdhury
źródło
0

Kod błędu H10 może oznaczać wiele różnych rzeczy. W moim przypadku pierwszy raz był taki, że nie wiedziałem, że Heroku nie jest kompatybilny z Sqlite3, drugi raz dlatego, że przypadkowo pchnąłem aktualizację z Google Analytics działającą zarówno w fazie rozwoju, jak i produkcji.

Trevor Hauck
źródło
0

Otrzymałem ten sam błąd jak „awaria aplikacji” i błąd H10, a dzienniki aplikacji heroku nie pokazują zbyt wielu informacji związanych z przyczynami komunikatu o błędzie. Następnie ponownie uruchomiłem hamownie w heroku, a następnie pokazał błąd informujący o dodatkowym nawiasie klamrowym w jednym z plików index.js w mojej konfiguracji. Problem został rozwiązany po usunięciu i ponownym wdrożeniu aplikacji na heroku.

Praveen
źródło
0

Starszy wątek, ale dla mnie nie ustawiłem .envvars w konsoli Heroku.

Josh Lavely
źródło
0

Używałem Parsera treści, które rzucają wyjątek

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

intead użytkowania

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

to rozwiązało mój problem

S.Sid
źródło
0

Chcę się tutaj zarejestrować, jakie było moje rozwiązanie tego błędu, który był prostym plikiem niezaktualizowanym na Github.

Mam projekt z pełnym stosem, a moje pliki mają strukturę zarówno katalogu głównego dla zaplecza, jak i klienta dla interfejsu (używam React.js). Wszystko sprowadzało się do tego, że omyłkowo wypychałem folder klienta tylko do Github, a wszystkie moje zmiany, które miały błąd (brakowało przecinka w instancji obiektu w moim index.js), nie zostały zaktualizowane po stronie zaplecza. Ponieważ Heroku pobiera wszystkie aktualizacje z repozytorium Github, nie mogłem uzyskać dostępu do mojego serwera i błąd się powtarzał. Potem wszystko, co musiałem zrobić, to zatwierdzić i wypchnąć do katalogu głównego i zaktualizować wszystkie zmiany w projekcie i wszystko wróciło do pracy.

Luis Febro
źródło
0

W moim przypadku miałem kod = H10 i status = 503, ponieważ mój plik Procfile:

web: node build/server.js

i włączone / build w .gitignore

Donovant
źródło
0

Zmagam się z tym samym błędem godzinami, ale udało mi się go rozwiązać. Przez pomyłkę zainstalowałem multer i aws-sdk jako devDependencies, a nie tylko zależności. Tak więc każdy, kto ma ten sam błąd, po prostu dwukrotnie sprawdź plik package.json.

Również mała wskazówka dotycząca właściwości silnika w pliku 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"
}
Taulant Vokshi
źródło
0

Wdrażałem framework Python Django, kiedy dostałem ten błąd, ponieważ zapomniałem podać nazwę mojej aplikacji web: gunicorn plaindjango.wsgi:application --log-file -zamiastplaindjango

Talha Anwar
źródło