Search code examples
node.jspostgresqlheroku

How to fix "Error: The server does not support SSL connections" when trying to access database in localhost?


I am following Heroku's node.js tutorial to provision a Postgres database. After creating a simple table and connecting to localhost:5000/db, I get an error saying "Error: The server does not support SSL connections".

I've been searching for solutions for hours but can't seem to fix it. Your help will be greatly appreciated. Thank you!


Solution

  • Here I provide a workaround for the question, and not the title of this post. A better answer to the post overall would probably address configuring SSL for the local machine.

    I arrived here trying to resolve the problem of finishing that Heroku tutorial mentioned in the question and setting up the Postgres database to work locally as well as remotely.

    const pool = new Pool({
        connectionString: process.env.DATABASE_URL || 'postgresql://postgres:<your admin password>@localhost:5432/<your db name>',
        ssl: process.env.DATABASE_URL ? true : false
    })
    

    My idea is to use SSL on the app I deploy but dodge SSL altogether on the local machine. By simply skipping SSL config on the local machine I am able to concentrate my efforts on developing a working app that still uses Heroku's built in SSL.

    I use the Heroku environment variables to detect their environment versus my own and I select values accordingly in the code sample above. For me this has worked both locally and remotely.