W porządku, w końcu udało mi się to rozgryźć. Myślę, że problem był wielowierszowy i po prostu nie znałem dotenv dla mojego lokalnego środowiska programistycznego.
Udało mi się to wszystko uruchomić z moim kodem w ten sposób. Działało również z fs.readFileSync(), ale nie chciałem zatwierdzić tego w mojej kontroli źródła.
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)
})
Teraz w moim config.env musiałem zrobić to tak:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Musiałem zachować to jako ciąg jednowierszowy, aby działał. Ale w końcu miałem połączyć się z
{rejectUnauthorized:true}
W przypadku zmiennej środowiskowej platformy cyfrowej aplikacji oceanicznej skopiowałem wszystko, w tym podwójne cudzysłowy, i wkleiłem je tam. Wydaje się działać świetnie. Nie sądzę jednak, że będziesz w stanie ustawić to ustawienie na true z ich bazą danych deweloperskich o wartości 7 USD. Musiałem uaktualnić do zarządzanego, aby znaleźć jakikolwiek certyfikat CA do pobrania.