Помилка першого розгортання Heroku `код помилки = H10`


86

Я розгорнув свій додаток на Heroku. Це програма node.js + express + socket.io, і це package.jsonфайл

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

Це журнал, який я отримую:

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=

Що це означає?


4
"Додаток зірвався" має очевидне значення: ваш додаток зірвався. Подивіться далі у свої журнали, щоб дізнатись чому, або heroku restartзапустити його знову, щоб ви могли спостерігати, як він знову збій.
Willglynn

У мене така ж проблема. Як ви це виправили?
Мартін Шаер,

6
на це питання є 1 відповідь, яка на сьогодні вже отримала 6 голосів проти ... будь ласка, виберіть цю відповідь як правильну відповідь на це запитання.
Ракіб

привіт @ilyo! Не могли б ви схвалити мою відповідь на це, будь ласка? Йому 7 років і він постійно допомагає людям :) Спасибі!
Мартін Шаер,

Відповіді:


192

Знайдено для мене рішення тут: помилка Heroku + node.js (веб-процес не вдалося прив’язати до $ PORT протягом 60 секунд після запуску)

У моєму випадку мій додаток розбився, тому що я важко встановлював ПОРТ, замість того, щоб використовувати порт, який встановлює heroku dinamicaly, до якого можна отримати доступ 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
Ну, дякую за це рішення. У мене була точно така ж проблема, і ваша відповідь вирішила мою проблему після кількох годин досліджень.
LukyVj

2
Навіть через два роки ця публікація допомогла мені, коли Heroku зазнав аварії. Дякую @Martin Schaer.
Рей Банго,

1
Точно це була моя проблема з весняним завантаженням Java. Дякую
Мохі Елдін

2
У наші дні більшість з нас використовують ES6. Тож цю ж відповідь можна записати і в ES6 за допомогою функції стрілки. app.listen (process.env.PORT || 3000, () => {console.log ("Експрес-прослуховування сервера на порту% d в режимі% s", this.address (). port, app.settings.env) ;});
Hemadri Dasari

Це трапилося зі мною, що було викликано спробою імпортувати бібліотеку, якої не було в моєму файлі package.json.
Іван Пірсон,

47

Я просто мав подібну проблему з моїм додатком, я отримав проблему після міграції БД, після випробування багатьох варіантів, що мені допомогло:

heroku restart

(Використання інструментальної стрічки Heroku для mac)


1
Я отримував той самий код помилки, і мій раніше працював, але це раптом почалося. Команда "heroku restart" це прояснила для мене.
Майк

Те ж саме сталося і зі мною після додавання New Relic. Перезапуск вирішив мою проблему
Kris Hollenbeck

5

У моєму випадку я виявив ту саму помилку, оскільки на моїй локальній машині є різниця версій node та npm і визначена у версії package.json.

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

коли я перевіряю використання

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

коли я оновлюю пакет .json до

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

Це чудово працює :)


5

у моєму випадку додавання process.env.PORT || 3000до мого сценарію сервера HTTP вирішено. Мій журнал героку повідомляє про помилку "H20" та статус http 503.


5

У мене була ця проблема, єдина проблема полягала в тому, що мій Procfile був таким

web : node index.js

і я змінився на

web:node index.js

єдиною проблемою були простори


3

У моєму випадку мій Procfile вказував на неправильний файл (bot.js, який я раніше використовував), тому, як тільки я його оновив, помилки не було.


3

використовуючи hapi18, я виявляю, що виймаю поле "хост" і встановлюю порт:

port: process.env.PORT || 5000 зробив фокус.


2

Також перевірте підключення до бази даних. Я забув змінити підключення до бази даних із localhost, і це призвело до аварійного завершення роботи мого додатка, коли його було перенесено на heroku.


2

Я зіткнувся з цією ж проблемою, і жодна з наведених відповідей мені не допомогла. Те, що я зробив, було запущено:

node --version

і в package.json додайте розділ двигунів з вашою версією вузла:

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

2

Стара тема, але я вирішую цю проблему, встановлюючи константу PORT для process.env.PORT ||

З якоїсь дивної причини він хотів спочатку шукати Env.


1

У моєму власному випадку я отримав цю помилку, оскільки відмовляюсь додавати Procfile до мого вузла js-додатку, і моє "main": "app.js" спочатку вказувало на інший js-файл як основний. отже, роблячи ці загрози, мені це виправляють


1

У мене була помилка

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

був

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


1

У моєму випадку я забув встановити env бази даних для розгортання. Ви можете встановити env за допомогою цієї команди (я використовую mLab для сервера MongoDB)

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


1

Для мене це був Package.json, він був порожній із залежностей, хоча я думав, що я їх встановив .. тому мені довелося перевстановити їх за допомогою опції --save в кінці і перевірити, що вони були додані до package.json .. а потім натисніть ще раз, і це спрацювало.


1

Якщо ви локально запускаєте сервер вузлів nodemon, як це робив я, і він працює локально, спробуйте npm start. Нодемон не повідомляв мені жодних помилок, але npm start розповів мені багато з них зрозумілим чином, і тоді я міг їх вирішити, перейшовши за іншими повідомленнями тут. Сподіваюся, це комусь допоможе.


1

У моєму випадку в розділі сценарію package.jsonфайлу не було команди start . Коли я створював package.jsonфайл, npm initя не створював команду запуску сценарію. Тож я перейшов до package.jsonфайлу, під сценаріями додав новий запис:

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

Зберегли та завантажили на Heroku, і це спрацювало



0

Мій порт був встановлений, config.httpPortякий вирішує до 80. Я виправив це, зробивши це:

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

app.listen(PORT, ...)

Велике спасибі, це витратило мене багато годин учора ввечері.


0

Код помилки H10 може означати багато різних речей. У моєму випадку перший раз тому, що я не знав, що Heroku не сумісний із Sqlite3, другий раз тому, що випадково натиснув оновлення з аналітикою Google, яка працює в розробці, а також у виробництві.


0

Я отримав ту ж помилку вище, що "додаток аварійно завершив роботу" та помилку H10, а журнали додатків heroku не відображають багато інформації, пов’язаної з причинами повідомлення про помилку. Потім я перезапустив dynos в heroku, і тоді він показав помилку, сказавши додаткову фігурну дужку в одному з файлів index.js у моїй установці. Проблема виправлена ​​після її видалення та перерозподілу програми на heroku.


0

Старіший потік, але для мене я не встановлював свої .envваріації на консолі Heroku.


0

я використовував body-Parser, який видає виняток

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

ціле використання

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

це вирішило моє питання


0

Я хочу зареєструвати тут, яким було моє рішення для цієї помилки - простого файлу, не оновленого до Github.

У мене є проект повного стеку, і мої файли структуровані як кореневий каталог для серверної бази, так і клієнт для інтерфейсу (я використовую React.js). Все зводилося до того, що я помилково натискав клієнтську папку лише на Github, і всі мої зміни, які мали помилку (відсутність коми в екземплярі об'єкта в моєму index.js), не оновлювались на стороні сервера. Оскільки Heroku отримує всі оновлення зі сховища Github, я не міг отримати доступ до свого сервера, і помилка не зникала. Потім все, що мені потрібно було зробити, це зафіксувати і натиснути на кореневий каталог і оновити всі зміни проекту, і все знову повернулося до роботи.


0

У моєму випадку у мене був код = H10 і статус = 503, оскільки мій Procfile:

web: node build/server.js

і я включив / побудував у .gitignore


0

Я борюся з однією і тією ж помилкою годинами, але мені вдалося її вирішити. Я помилково встановив multer та aws-sdk як devDependencies, а не просто залежності. Отже, будь-хто, у кого є та сама помилка, просто перевірте файл package.json.

Крім того, невелика підказка щодо властивості двигуна в 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

Коли я отримав цю помилку, я розгортав фреймворк python Django, бо забув вказати ім'я свого додатка web: gunicorn plaindjango.wsgi:application --log-file -замістьplaindjango

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.