Heroku возвращает ошибку: слушайте EADDRNOTAVAIL: адрес недоступен при запуске Strapi CMS

Я пытаюсь развернуть Strapi на Heroku

Но это не работает. Я получаю этот журнал

2020-05-27T15:04:05.012958+00:00 app[web.1]: > [email protected] start /app
2020-05-27T15:04:05.012959+00:00 app[web.1]: > node server.js
2020-05-27T15:04:05.012960+00:00 app[web.1]: 
2020-05-27T15:04:08.188595+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'count' of module exports inside circular dependency
2020-05-27T15:04:08.188639+00:00 app[web.1]: (Use `node --trace-warnings ...` to show where the warning was created)
2020-05-27T15:04:08.189164+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency
2020-05-27T15:04:08.189299+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency
2020-05-27T15:04:08.189381+00:00 app[web.1]: (node:23) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency
2020-05-27T15:04:12.308848+00:00 app[web.1]: [2020-05-27T15:04:12.308Z] error Error: listen EADDRNOTAVAIL: address not available 52.54.48.43:31639
2020-05-27T15:04:12.308857+00:00 app[web.1]:     at Server.setupListenHandle [as _listen2] (net.js:1296:21)
2020-05-27T15:04:12.308858+00:00 app[web.1]:     at listenInCluster (net.js:1361:12)
2020-05-27T15:04:12.308859+00:00 app[web.1]:     at GetAddrInfoReqWrap.doListen [as callback] (net.js:1498:7)
2020-05-27T15:04:12.308859+00:00 app[web.1]:     at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:68:8)
2020-05-27T15:04:22.927720+00:00 heroku[web.1]: Stopping all processes with SIGTERM

Я использую MongoDB в Атласе. Он хорошо работает в среде localhost как для разработчиков, так и для продуктов.

Мои производственные файлы:

server.js

введите здесь описание изображения

database.js

введите здесь описание изображения

response.js

введите здесь описание изображения

настройки приложения

введите здесь описание изображения

Где я что-то упустил?


person podeig    schedule 27.05.2020    source источник
comment
ты решил это? У меня такая же проблема.   -  person Touha    schedule 11.08.2020
comment
Привет @Touha, я только что ответил на свой вопрос. :)   -  person podeig    schedule 17.08.2020


Ответы (3)


Какое значение имеет process.env.HOST. Почему-то отличается от 0.0.0.0 (просто выстрел в темноте - https://strapi.io/documentation/3.0.0-beta.x/migration-guide/migration-guide-beta.19-to-beta.19.4.html#listened-host-changed)

person Rochadsouza    schedule 13.07.2020

Пришлось изменить файл server.js (порт 443):

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 443),
  admin: {
    auth: {
      secret: env('ADMIN_JWT_SECRET'),
    },
  },
});

Мой файл database.js:

module.exports = ({ env }) => ({
  defaultConnection: "default",
  connections: {
    default: {
      connector: "mongoose",
      settings: {
        uri: env("DATABASE_URI"),
        ssl: { rejectUnauthorized: false }
      },
      options: {
        ssl: true,
        authenticationDatabase: "",
        useUnifiedTopology: true,
        pool: {
          min: 0,
          max: 10,
          idleTimeoutMillis: 30000,
          createTimeoutMillis: 30000,
          acquireTimeoutMillis: 30000
        }
      },
    },
  },
});

Надеюсь, это поможет кому-нибудь, у кого такая же проблема :-)

person podeig    schedule 17.08.2020
comment
Я не понимаю, как это могло решить вашу проблему. Heroku всегда будет определять переменную окружения PORT на основе порта, выбранного для вашего приложения (порт 31639, если я посмотрю на полученную вами ошибку). Это означает, что если вы определяете свой хост с помощью env.int('PORT', 443), будет использоваться переменная окружения PORT, определенная Heroku, а не 443. Что, вероятно, решило это, так это тот факт, что ваш хост теперь является целым числом, а раньше был строкой. - person pmrotule; 30.01.2021

Не уверен, что это означало @Rochadsouza, но я получил ту же ошибку, и в конечном итоге проблема в моем случае была решена путем установки хоста на 0.0.0.0. По некоторым причинам хост не может быть URL-адресом приложения, он должен разрешить все хосты на Heroku. Я устанавливал хост в server.js, используя env('HOST', '0.0.0.0'), но для HOST env var был установлен URL-адрес моего приложения на Heroku ...

Надеюсь, это сэкономит время другим, столкнувшимся с той же ошибкой.

person pmrotule    schedule 30.01.2021