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

Что это значит?

ilyo
источник
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)

Clarenswd
источник
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 сделали свое дело.

Littlebotrj
источник
2

Также проверьте подключение к базе данных. Я забыл изменить подключение к базе данных с localhost, и это привело к сбою моего приложения после того, как оно было отправлено на heroku.

Lindsaymacvean
источник
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

Пароль содержал% сломал его для меня.

Джек Стоун
источник
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

Более .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, а не просто 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

Тальха Анвар
источник