Penerapan Heroku pertama gagal `kode kesalahan = H10`

88

Saya menerapkan aplikasi saya ke Heroku. Ini adalah aplikasi node.js + express + socket.io dan ini adalahpackage.json filenya

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

Ini log yang saya dapatkan:

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=

Apa artinya?

ilyo
sumber
4
"Aplikasi mogok" memiliki arti yang jelas: aplikasi Anda mogok. Lihat lebih jauh di log Anda untuk mengetahui alasannya, atau heroku restartuntuk meluncurkannya lagi sehingga Anda dapat melihatnya macet lagi.
willglynn
Saya mengalami masalah yang sama. Bagaimana Anda memperbaikinya?
Martin Schaer
6
ada 1 jawaban untuk pertanyaan ini yang sudah mendapat 6 suara positif sampai sekarang ... silakan pilih jawaban itu sebagai jawaban yang benar dari pertanyaan ini.
Rakib
hai @ilyo! Bisakah Anda menyetujui jawaban saya tentang ini? Sudah 7 tahun dan terus membantu orang :) Terima kasih!
Martin Schaer

Jawaban:

199

Menemukan solusi untuk saya di sini: Kesalahan Heroku + node.js (Proses web gagal mengikat $ PORT dalam waktu 60 detik setelah peluncuran)

Dalam kasus saya, aplikasi saya macet karena saya sulit mengatur PORT, alih-alih menggunakan port yang diatur secara dinamis oleh heroku, yang dapat diakses dengan 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
sumber
1
Terima kasih atas solusi ini. Saya memiliki masalah yang persis sama, dan jawaban Anda memecahkan masalah saya setelah beberapa jam penelitian.
LukyVj
2
Bahkan 2 tahun kemudian, posting ini membantu saya ketika Heroku jatuh. Terima kasih @Martin Schaer.
Rey Bango
1
Persisnya itu masalah saya dengan java spring boot. Terima kasih
Mohy Eldeen
2
Hari-hari ini kebanyakan dari kita menggunakan ES6. Jadi jawaban yang sama juga bisa ditulis di ES6 menggunakan fungsi panah. app.listen (process.env.PORT || 3000, () => {console.log ("Server ekspres mendengarkan pada port% d dalam mode% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari
1
@ PraveenKumar-M biasanya baris tersebut masuk ke file utama server Anda (index.js). appadalah contoh ekspres
Martin Schaer
47

Saya baru saja mengalami masalah serupa dengan aplikasi saya, saya mendapat masalah setelah migrasi DB, setelah mencoba banyak opsi, salah satu yang membantu saya adalah ini:

heroku restart

(Menggunakan sabuk alat Heroku untuk mac)

clarenswd.dll
sumber
1
Saya mendapatkan kode kesalahan yang sama dan saya dulu berfungsi tetapi ini tiba-tiba mulai terjadi. Perintah "heroku restart" membersihkan ini untuk saya.
Mike
Hal yang sama terjadi pada saya setelah menambahkan Relik Baru. Mulai ulang memperbaiki masalah saya
Kris Hollenbeck
6

Saya punya masalah ini, satu-satunya masalah adalah Procfile saya seperti ini

web : node index.js

dan saya berubah menjadi

web:node index.js

satu-satunya masalah adalah spasi

Arian Nargesi
sumber
5

Dalam kasus saya, saya menemukan kesalahan yang sama karena ada perbedaan versi node dan npm di mesin lokal saya dan didefinisikan dalam versi package.json.

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

ketika saya memeriksa menggunakan

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

ketika saya memperbarui package.json saya ke

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

Ini berfungsi dengan baik :)

Mahesh Singh Chouhan
sumber
5

dalam kasus saya menambahkan process.env.PORT || 3000skrip server http saya, diselesaikan. Log heroku saya melaporkan kesalahan 'H20' dan status http 503.

Ewertom Moraes
sumber
3

Dalam kasus saya, Procfile saya menunjuk ke file yang salah (bot.js yang sebelumnya saya gunakan) jadi setelah saya memperbaruinya, kesalahan itu hilang.

Sina Meraji
sumber
3

setelah menggunakan hapi18, saya menemukan mengambil bidang "host" dan menyetel port ke:

port: process.env.PORT || 5000 berhasil.

littlebotrj
sumber
2

Periksa juga koneksi database Anda. Saya lupa mengubah koneksi database saya dari localhost dan ini membuat aplikasi saya crash begitu didorong ke heroku.

lindsaymacvean.dll
sumber
2

Saya menghadapi masalah yang sama dan tidak ada jawaban di atas yang membantu saya. Apa yang saya lakukan adalah lari:

node --version

dan di package.json tambahkan bagian mesin dengan versi node Anda:

{
  "name": "myapp",
  "description": "a really cool app",
  "version": "1.0.0",
  "engines": {
    "node": "6.11.1"
  }
}
Martin De Simone
sumber
2

Jika Anda secara lokal memulai server node oleh nodemon, seperti yang saya lakukan, dan berfungsi secara lokal, coba npm start. Nodemon memberi tahu saya tidak ada kesalahan, tetapi npm start memberi tahu saya banyak kesalahan dengan cara yang dapat dimengerti dan kemudian saya bisa menyelesaikannya dengan mengikuti posting lain di sini. Saya harap ini membantu seseorang.

Erik
sumber
2

Thread Lama, tapi saya memperbaiki masalah ini dengan mengatur PORT konstan ke process.env.PORT ||

Untuk beberapa alasan aneh, dia ingin mencari Env dulu.

Isaac Frank
sumber
1

Dalam kasus saya sendiri, saya mendapatkan kesalahan ini karena saya menolak untuk menambahkan Procfile ke aplikasi node js saya dan "main": "app.js" saya awalnya menunjuk ke file js lain sebagai main. jadi melakukan chnages ini memperbaikinya untuk saya

Hutan baba
sumber
1

Saya salah ketik

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

dulu

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

Omar
sumber
1

Dalam kasus saya, saya lupa menyetel env database untuk penerapan. Anda dapat mengatur env dengan perintah ini (saya menggunakan mLab untuk server MongoDB)

konfigurasi heroku: set MONGO_URI = 'mongodb: // alamat'

minjun youn
sumber
1

Bagi saya itu Package.json, itu kosong dari dependensi meskipun saya pikir saya menginstalnya .. jadi saya harus menginstalnya kembali dengan opsi --save pada akhirnya dan memverifikasi bahwa mereka telah ditambahkan ke package.json .. dan kemudian dorong lagi dan berhasil.

Roma
sumber
1

Dalam kasus saya, tidak ada perintah start di bagian skrip package.jsonfile. Ketika saya membuat package.jsonfile dengan npm initsaya tidak membuat perintah skrip start. Jadi saya pergi ke package.jsonfile, di bawah skrip saya menambahkan entri baru:

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

Menyimpannya dan mengunggahnya ke Heroku dan berhasil

Mahmoud Awad
sumber
0

Kata sandi berisi% memecahkannya untuk saya.

Jack Stone
sumber
0

Port saya diatur ke config.httpPortmana memutuskan ke 80. Saya memperbaikinya dengan melakukan ini:

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

app.listen(PORT, ...)

Terima kasih banyak, saya menghabiskan banyak waktu tadi malam.

Tamal Anwar Chowdhury
sumber
0

Kode kesalahan H10 bisa berarti banyak hal berbeda. Dalam kasus saya, pertama kali karena saya tidak tahu bahwa Heroku tidak kompatibel dengan Sqlite3, yang kedua adalah karena saya secara tidak sengaja mendorong pembaruan dengan analisis Google yang bekerja dalam pengembangan dan produksi.

Trevor Hauck
sumber
0

Saya mendapatkan kesalahan yang sama di atas sebagai "aplikasi rusak" dan kesalahan H10 dan log aplikasi heroku tidak menunjukkan banyak info terkait dengan alasan pesan kesalahan. Kemudian saya memulai ulang dynos di heroku dan kemudian menunjukkan kesalahan yang mengatakan kurung kurawal tambahan di salah satu file index.js di pengaturan saya. Masalah diperbaiki setelah dihapus dan diterapkan ulang aplikasi di heroku.

Praveen
sumber
0

Utas yang lebih lama, tetapi bagi saya, saya tidak mengatur .envvars saya di konsol Heroku.

Josh Lavely
sumber
0

saya menggunakan body-Parser yang membuang pengecualian

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

daripada menggunakan

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

ini menyelesaikan masalah saya

S.Sid
sumber
0

Saya ingin mendaftar di sini apa solusi saya untuk kesalahan ini yang merupakan file sederhana yang tidak diperbarui ke Github.

Saya memiliki proyek tumpukan penuh, dan file saya terstruktur baik direktori root untuk backend dan klien untuk frontend (saya menggunakan React.js). Semua bermuara pada fakta bahwa saya secara keliru mendorong folder klien hanya ke Github dan semua perubahan saya yang mengalami kesalahan (kehilangan koma dalam contoh objek di index.js saya) tidak diperbarui di sisi backend. Karena Heroku ini mengambil semua pembaruan dari Github Repository, saya tidak dapat mengakses server saya dan kesalahan terus berlanjut. Kemudian yang harus saya lakukan adalah berkomitmen dan mendorong ke direktori root dan memperbarui semua perubahan proyek dan semuanya kembali berfungsi lagi.

Luis Febro
sumber
0

Dalam kasus saya, saya memiliki kode = H10 dan status = 503 karena Procfile saya:

web: node build/server.js

dan saya termasuk / membangun di Gitignore

Donovant
sumber
0

Saya berjuang dengan kesalahan yang sama selama berjam-jam, tetapi saya bisa menyelesaikannya. Saya menginstal multer dan aws-sdk sebagai devDependencies secara tidak sengaja, bukan hanya dependensi. Jadi, siapa pun yang memiliki kesalahan yang sama, periksa kembali file package.json Anda.

Juga, tip kecil untuk properti mesin di 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
sumber
0

Saya menggunakan kerangka kerja python Django ketika saya mendapatkan kesalahan ini karena saya lupa untuk memasukkan nama aplikasi saya web: gunicorn plaindjango.wsgi:application --log-file -sebagai gantinyaplaindjango

Talha Anwar
sumber