Почему происходит сбой моего приложения стека Heroku MERN? - PullRequest
0 голосов
/ 22 апреля 2020

Я развернул мое приложение стека mern на heroku, но получаю ошибки, которые я не знаю, в чем причина. журнал ошибок

 2020-04-22T15:25:46.000000+00:00 app[api]: Build succeeded
 2020-04-22T15:25:58.707869+00:00 app[web.1]: 
 2020-04-22T15:25:58.707896+00:00 app[web.1]: > contactkeeper@1.0.0 start /app
 2020-04-22T15:25:58.707897+00:00 app[web.1]: > node server.js
 2020-04-22T15:25:58.707897+00:00 app[web.1]: 
 2020-04-22T15:25:59.586133+00:00 app[web.1]: Server started on port 5000..
2020- 04-22T15:25:59.792525+00:00 app[web.1]: Database connected...
2020-04-22T15:26:56.331376+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-22T15:26:56.334688+00:00 heroku[web.1]: State changed from crashed to starting
2020-04-22T15:27:07.526858+00:00 app[web.1]: 
2020-04-22T15:27:07.526882+00:00 app[web.1]: > contactkeeper@1.0.0 start /app
2020-04-22T15:27:07.526883+00:00 app[web.1]: > node server.js
2020-04-22T15:27:07.526883+00:00 app[web.1]: 
2020-04-22T15:27:08.176741+00:00 app[web.1]: Server started on port 5000..
2020-04-22T15:27:08.300897+00:00 app[web.1]: Database connected...
2020-04-22T15:28:05.725653+00:00 heroku[web.1]: State changed from starting to crashed
2020-04-22T15:28:08.166135+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=quiet-stream-92502.herokuapp.com request_id=e53971ab-65b3-4aa5-bf96-678ab2e6101b fwd="105.112.99.16" dyno= connect= service= status=503 bytes= protocol=https
2020-04-22T15:28:09.099701+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=quiet-stream-92502.herokuapp.com request_id=a0b04322-cb79-472b-8c93-19c55d3e0f1b fwd="105.112.99.16" dyno= connect= service= status=503 bytes= protocol=https

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Если вы внимательно посмотрите на свою ошибку, вы заметите, что она говорит, что работает на порту 5000. Причина, по которой вы получаете ошибку, заключается в том, что вы не используете номер порта, который Heroku назначает вашему приложению.

Поскольку вы используете express, ваш app.listen должен выглядеть следующим образом

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => {
  console.log("server has started");
});

Убедитесь, что вы не положили 5000 до process.env.PORT. Это приведет к ошибке при попытке развернуть на героку.

0 голосов
/ 22 апреля 2020

Дубликат
Найденный ответ

Кроме того, для понимания
Из документации Heroku: Common Runtime обеспечивает надежную изоляцию, защищая все динамо от друг друга. Единственный трафик c, который может достичь динамо, - это веб-запросы, пересылаемые с маршрутизатора на веб-процессы, прослушивающие номер порта, указанный в переменной среды $ PORT. Рабочие и одноразовые dynos не могут получать входящие запросы.
[...]

dynos common-run-networking

Это означает, что вы не можете установить пользовательский ПОРТ.
Вы должны использовать динамически генерируемую переменную среды с именем "ПОРТ"

...