Ошибка первого развертывания Heroku `error code = 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

У меня такая же проблема. Как ты это починил?
— Martin Schaer

6
есть 1 ответ на этот вопрос, который к настоящему моменту уже получил 6 голосов ... выберите этот ответ как правильный ответ на этот вопрос.
— Ракиб

привет @ilyo! Не могли бы вы одобрить мой ответ по этому поводу? Ему 7 лет, и он продолжает помогать людям :) Спасибо!
— Мартин Шер,

Ответы:


192

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

В моем случае мое приложение вылетело из-за того, что я жестко установил ПОРТ вместо того, чтобы использовать порт, который устанавливает динамический герой, к которому можно получить доступ с помощью 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
Даже через 2 года этот пост помог мне, когда Heroku вылетал. Спасибо @Martin Schaer.
— Рей Банго

1
Именно это была моя проблема с загрузкой java spring. Спасибо
— Mohy Eldeen

2
В наши дни большинство из нас использует ES6. Такой же ответ можно записать в ES6 с помощью стрелочной функции. app.listen (process.env.PORT || 3000, () => {console.log («Экспресс-сервер прослушивает порт% d в режиме% s», this.address (). port, app.settings.env) ;});
— Хемадри Дасари

Это случилось со мной, потому что я пытался импортировать библиотеку, которой не было в моем файле package.json.
— Иван Пирсон

47

У меня была аналогичная проблема с моим приложением, у меня возникла проблема после миграции БД, после того, как я попробовал множество вариантов, мне помогло следующее:

heroku restart

(Использование Heroku toolbelt для Mac)


1
Я получал тот же код ошибки, и мой раньше работал, но это внезапно начало происходить. Команда "heroku restart" прояснила это для меня.
— Майк,

То же самое произошло со мной после добавления New Relic. Перезагрузка устранила мою проблему
— Крис Холленбек

5

В моем случае я обнаружил ту же ошибку, потому что на моем локальном компьютере существует разница в версиях node и npm, определенная в версии package.json.

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

когда я проверяю использование

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

когда я обновляю свой package.json до

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

Работает нормально :)


5

в моем случае добавление process.env.PORT || 3000к моему http-серверу скрипта разрешено. В моем журнале heroku сообщается об ошибке «H20» и статусе HTTP 503.


5

У меня была эта проблема, единственная проблема заключалась в том, что мой Procfile был таким

web : node index.js

и я изменился на

web:node index.js

единственной проблемой были пробелы


3

В моем случае мой Procfile указывал на неправильный файл (bot.js, который я использовал ранее), поэтому, как только я его обновил, ошибка исчезла.


3

при использовании hapi18 я обнаружил, что вынул поле «host» и установил порт:

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 в мое приложение node js, а мой «main»: «app.js» изначально указывал на другой файл js как на основной. Так что сделайте эти изменения, исправьте это для меня


1

У меня была опечатка

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

раньше был

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


1

В моем случае я забыл установить базу данных env для развертывания. вы можете установить env с помощью этой команды (я использую mLab для сервера MongoDB)

конфигурация heroku: установить MONGO_URI = 'mongodb: // address'


1

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


1

Если вы запускаете сервер узла локально nodemon, как я, и он работает локально, попробуйте npm start. Nodemon не сообщал мне об ошибках, но npm start объяснил мне многие из них понятным образом, и я мог решить их, следуя другим сообщениям здесь. Надеюсь, это кому-то поможет.


1

В моем случае в разделе package.jsonфайла сценария не было команды запуска . Когда я создавал 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 не отображается много информации, связанной с причинами сообщения об ошибке. Затем я перезапустил дино в heroku, а затем он показал ошибку, указав дополнительную фигурную скобку в одном из файлов index.js в моей настройке. Проблема была устранена после удаления и повторного развертывания приложения на 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, а не просто dependencies. Итак, любой, у кого есть такая же ошибка, просто дважды проверьте свой файл 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.