Oke ik heb het eindelijk kunnen achterhalen. Ik denk dat het probleem multiline was en gewoon onbekendheid met dotenv voor mijn lokale ontwikkelomgeving.
Ik was in staat om het allemaal werkend te krijgen met mijn code op deze manier. Het werkte ook met fs.readFileSync() maar ik wilde dat niet vastleggen in mijn broncodebeheer.
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 moest ik het er in mijn config.env zo uit laten zien:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Ik moest het als een enkele regelreeks houden om het te laten werken. Maar ik zou eindelijk contact maken met
{rejectUnauthorized:true}
Voor de omgevingsvariabele van het digitale oceaan-app-platform heb ik alles gekopieerd, inclusief de dubbele aanhalingstekens en daarin geplakt. Lijkt geweldig te werken. Ik denk echter niet dat je deze instelling op true kunt zetten met hun $ 7-ontwikkelingsdatabase. Ik moest upgraden naar de beheerde versie om een CA-certificaat te vinden om te downloaden.