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?


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);
});

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)


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 :)


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.


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


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ął.


3

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

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


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.


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

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.


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


1

Miałem literówkę

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

był

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


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'


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.


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.


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



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.


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.


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.



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


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.


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


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.