Okej, jag kunde äntligen ta reda på det. Jag tror att problemet var multiline och bara obekantskap med dotenv för min lokala utvecklingsmiljö.
Jag kunde få allt att fungera med min kod så här. Det fungerade också med fs.readFileSync() men jag ville inte överlåta det till min källkontroll.
const { Pool } = require('pg')
const fs = require('fs')
const pgPool = new Pool({
user: process.env.PGUSER,
password: process.env.PGPASSWORD,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
port: process.env.PGPORT,
ssl: {
rejectUnauthorized: true,
// ca: fs.readFileSync(
// `${process.cwd()}/cert/ca-certificate.crt`.toString()
// ),
ca: process.env.CA_CERT,
},
})
.on('connect', () => {
console.log('connected to the database!')
})
.on('error', (err) => {
console.log('error connecting to database ', err)
})
Nu i min config.env var jag tvungen att få det att se ut så här:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Jag var tvungen att behålla den som en rad för att få den att fungera. Men jag skulle äntligen få kontakt med
{rejectUnauthorized:true}
För miljövariabeln för digital ocean app-plattformen kopierade jag allt inklusive dubbla citattecken och klistrade in det där. Verkar fungera utmärkt. Jag tror dock inte att du kommer att kunna ha den här inställningen inställd på sann med deras $7 utvecklingsdatabas. Jag var tvungen att uppgradera till den hanterade för att hitta något CA-certifikat att ladda ner.