İlk Heroku dağıtımı başarısız oldu "hata kodu = H10"


88

Uygulamamı Heroku'ya dağıttım. Bu bir node.js + express + socket.io uygulaması ve bu package.jsondosya

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

Aldığım günlük bu:

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=

Bunun anlamı ne?


4
"Uygulama kilitlendi" nin açık anlamı vardır: uygulamanız kilitlendi. Nedenini görmek için günlüklerinize daha fazla bakın veya heroku restarttekrar başlatarak çökmesini tekrar izleyebilirsiniz.
willglynn

Ben de aynı sorunu yaşıyorum. Nasıl düzelttin
Martin Schaer

6
Şimdiye kadar 6 olumlu oy almış olan bu sorunun 1 cevabı var ... lütfen bu cevabı bu sorunun doğru cevabı olarak seçin.
Rakib

merhaba @ilyo! Bu konudaki cevabımı onaylar mısınız lütfen? 7 yaşında ve insanlara yardım etmeye devam ediyor :) Teşekkürler!
Martin Schaer

Yanıtlar:


199

Burada benim için çözüm bulundu: Heroku + node.js hatası (Web işlemi, başlatıldıktan sonra 60 saniye içinde $ PORT'a bağlanamadı)

Benim durumumda uygulamam çöktü, çünkü heroku dinamikalinin ayarladığı bağlantı noktasını kullanmak yerine PORT'u ayarlamakta zorlandım. 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
Peki, bu çözüm için teşekkür ederim. Bende de aynı problem vardı ve cevabınız birkaç saatlik araştırmalardan sonra problemimi çözdü.
LukyVj

2
2 yıl sonra bile, bu yazı Heroku çökerken bana yardımcı oldu. Teşekkürler @Martin Schaer.
Rey Bango

1
Tam olarak java yaylı önyüklemeyle ilgili sorunumdu. Teşekkürler
Mohy Eldeen

2
Bugünlerde çoğumuz ES6 kullanıyoruz. Yani aynı cevap ok fonksiyonu kullanılarak ES6'da da yazılabilir. app.listen (process.env.PORT || 3000, () => {console.log ("% s modunda% d bağlantı noktasında hızlı sunucu dinleme", this.address (). bağlantı noktası, app.settings.env) ;});
Hemadri Dasari

1
@ PraveenKumar-M genellikle bu satır sunucunuzun ana dosyasına (index.js) gider. appbir ekspres örneğidir
Martin Schaer

47

Uygulamamla benzer bir sorun yaşadım, birçok seçeneği denedikten sonra DB'nin taşınmasından sonra sorunu aldım, bana yardımcı olan şuydu:

heroku restart

(Mac için Heroku araç kemerini kullanarak)


1
Aynı hata kodunu alıyordum ve benimki işe yarıyordu ama bu birdenbire olmaya başladı. "Heroku yeniden başlatma" komutu bunu benim için çözdü.
Mike

New Relic'i ekledikten sonra bana da aynı şey oldu. Yeniden başlat sorunumu çözdü
Kris Hollenbeck

6

Bu sorunu yaşadım, tek sorun Procfile'ım böyleydi

web : node index.js

ve ben değiştim

web:node index.js

tek sorun boşluklardı


5

Benim durumumda aynı hatayı buldum çünkü yerel makinemde düğüm ve npm sürüm farkı var ve package.json sürümünde tanımlandı.

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

kullanarak kontrol ettiğimde

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

package.json'umu güncellediğimde

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

İyi çalışıyor :)


5

benim durumumda process.env.PORT || 3000http sunucu komut dosyama ekleme çözüldü. Heroku günlüğüm 'H20' hatası ve 503 http durumu bildirdi.


3

Benim durumumda, Procfile'ım yanlış dosyayı (daha önce kullandığım bot.js) işaret ediyordu, bu yüzden onu güncellediğimde, hata gitti.


3

hapi18'i kullandığımda, "ana bilgisayar" alanını çıkardığımı ve bağlantı noktasını şu şekilde ayarladığımı buluyorum:

port: process.env.PORT || 5000 hile yaptı.


2

Ayrıca veritabanı bağlantınızı da kontrol edin. Veritabanı bağlantımı localhost'tan değiştirmeyi unuttum ve bu uygulama heroku'ya gönderildikten sonra çöktü.


2

Aynı problemle karşılaştım ve yukarıdaki cevapların hiçbiri bana yardımcı olmadı. Yaptığım şey koşmaktı:

node --version

ve package.json içinde motorlar bölümünü düğüm sürümünüzle ekleyin:

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

2

Düğüm sunucusunu yerel olarak başlatırsanız nodemon, benim yaptığım gibi ve yerel olarak çalışırsa, deneyin npm start. Nodemon bana hiçbir hata söylemiyordu, ancak npm start bana bunların çoğunu anlaşılır bir şekilde anlattı ve sonra burada başka bir gönderiyi takip ederek bunları çözebilirdim. Umarım birine yardımcı olur.


2

Eski İş Parçacığı, ancak PORT sabitini process.env.PORT olarak ayarlayarak bu sorunu çözüyorum. ||

Garip bir nedenden ötürü, önce Env'i aramak istedi.


1

Kendi durumumda, bu hatayı aldım çünkü node js uygulamama bir Procfile eklemeyi reddediyorum ve "main": "app.js" başlangıçta main olarak başka bir js dosyasını gösteriyordu. bu yüzden bu değişiklikleri yapmak benim için düzelttir


1

Bir yazım hatam vardı

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

eskiden

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


1

Benim durumumda, dağıtım için veritabanı ortamını ayarlamayı unuttum. env ayarını bu komutla yapabilirsiniz (MongoDB sunucusu için mLab kullanıyorum)

heroku yapılandırması: MONGO_URI = 'mongodb: // adresi' ayarlayın


1

Benim için bu Package.json'du, onları kurduğumu düşünmeme rağmen bağımlılıklardan boştu .. bu yüzden onları sonunda --save seçeneğiyle yeniden yüklemek ve paket.json'a eklendiklerini doğrulamak zorunda kaldım .. ve sonra tekrar itin ve işe yaradı.


1

Benim durumumda package.jsondosyanın betik bölümünde başlatma komutu yoktu . Ben yarattığında package.jsondosyayı npm initI bir başlangıç komut dosyası komutunu yaratmadı. Bu yüzden package.jsondosyaya gittim , komut dosyalarının altına yeni bir giriş ekledim:

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

Kaydedip Heroku'ya yükledim ve çalıştı



0

Bağlantı noktası config.httpPortçözülecek şekilde ayarlandı 80. Bunu yaparak düzelttim:

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

app.listen(PORT, ...)

Çok teşekkürler, dün gece beni çok boşa harcadı.


0

H10 hata kodu birçok farklı anlama gelebilir. Benim durumumda, ilk kez Heroku'nun Sqlite3 ile uyumlu olmadığını bilmediğim için, ikinci seferde geliştirme ve üretimde çalışan Google analitiği ile yanlışlıkla bir güncelleme yayınlamış olmamdı.


0

Yukarıdaki "uygulama çöktü" ve H10 hatasıyla aynı hatayı aldım ve heroku uygulama günlükleri, hata msg nedenleriyle ilgili fazla bilgi göstermiyor. Sonra heroku'daki dynos'u yeniden başlattım ve sonra kurulumumdaki index.js dosyalarından birinde ek küme ayracı olduğunu söyleyen hatayı gösterdi. Uygulama kaldırılıp heroku'da yeniden dağıtıldıktan sonra sorun çözüldü.


0

Daha eski iş parçacığı, ancak benim .enviçin heroku konsolunda değişkenlerimi belirlemedim .


0

istisna atan vücut ayrıştırıcı kullanıyordum

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

kullanma zevki

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

bu benim sorunumu çözdü


0

Github'a güncellenmemiş basit bir dosya olan bu hata için çözümümün ne olduğunu buradan kaydetmek istiyorum.

Tam bir yığın projem var ve dosyalarım hem arka uç için kök dizin hem de ön uç için istemci yapılandırıldı (React.js kullanıyorum). Her şey, istemci klasörünü yanlışlıkla yalnızca Github'a ittiğim ve hata içeren tüm değişikliklerimin (index.js'imdeki bir nesnenin örneğinde virgül eksik olması) arka uç tarafında güncellenmediği gerçeğine indi. Bu Heroku, Github Deposundan tüm güncellemeleri aldığından, sunucuma erişemedim ve hata devam etti. Sonra tek yapmam gereken, kök dizine geçmek ve projedeki tüm değişiklikleri güncellemek oldu ve her şey yeniden çalışmaya başladı.


0

Benim durumumda kod = H10 ve durum = 503 vardı çünkü Procfile:

web: node build/server.js

ve ben dahil / yapı içinde .gitignore


0

Aynı hatayla saatlerce uğraşıyorum ama çözebildim. Multer ve aws-sdk'yi sadece bağımlılıklar yerine yanlışlıkla bir devDependency'ler olarak kurdum. Yani, aynı hataya sahip olan herkes, package.json dosyanızı iki kez kontrol etsin.

Ayrıca, package.json'daki motorun özelliği için küçük bir ipucu.

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

Benim uygulama adı koymak unutmayın çünkü bu hatayı geldiğimde piton Django framework dağıtma edildi web: gunicorn plaindjango.wsgi:application --log-file -yerineplaindjango

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.