Dobře, konečně jsem na to přišel. Myslím, že problém byl víceřádkový a pouze neznalost dotenv pro mé místní vývojové prostředí.
Podařilo se mi, aby to všechno fungovalo s mým kódem takto. Fungovalo to také s fs.readFileSync(), ale nechtěl jsem to svěřovat svému ovládání zdroje.
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)
})
Nyní v mém config.env jsem musel, aby to vypadalo takto:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Musel jsem to ponechat jako jeden řádek, aby to fungovalo. Ale nakonec jsem se chtěl spojit s
{rejectUnauthorized:true}
Pro proměnnou prostředí platformy digitální oceán jsem zkopíroval vše včetně dvojitých uvozovek a vložil to tam. Zdá se, že funguje skvěle. Nemyslím si však, že budete moci mít toto nastavení nastaveno na hodnotu true s jejich vývojovou databází $ 7. Musel jsem upgradovat na spravovaný, abych našel nějaký certifikát CA ke stažení.