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.