podeig
podeig

Reputation: 2741

Heroku returns "Error: listen EADDRNOTAVAIL: address not available" on starting Strapi CMS

I am trying to deploy Strapi on Heroku

But it does not work. I get this log

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

I use MongoDB on Atlas. It works well on localhost both dev and prod environment.

My production files:

server.js

enter image description here

database.js

enter image description here

response.js

enter image description here

app settings

enter image description here

Where did I miss something?

Upvotes: 2

Views: 2178

Answers (3)

pmrotule
pmrotule

Reputation: 9692

Not sure if it's what @Rochadsouza meant, but I got the same error and what finally solved the issue in my case was to set the host to 0.0.0.0. For some reasons, the host cannot be the app url, it needs to allow all hosts on Heroku. I was setting the host in server.js using env('HOST', '0.0.0.0') but had the HOST env var set to my app url on Heroku...

Hope it saves some time to others facing the same error.

Upvotes: 1

podeig
podeig

Reputation: 2741

I had to change server.js file (port 443):

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

My database.js file:

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
        }
      },
    },
  },
});

I hope it will help to somebody who has the same problem :-)

Upvotes: 1

Rochadsouza
Rochadsouza

Reputation: 978

Which is the value of process.env.HOST. For some reason different from 0.0.0.0 (just a shot in the dark - https://strapi.io/documentation/3.0.0-beta.x/migration-guide/migration-guide-beta.19-to-beta.19.4.html#listened-host-changed)

Upvotes: 1

Related Questions