Baiklah akhirnya aku bisa mengetahuinya. Saya pikir masalahnya adalah multiline dan hanya ketidaktahuan dengan dotenv untuk lingkungan berkembang lokal saya.
Saya bisa membuat semuanya bekerja dengan kode saya seperti ini. Ini juga bekerja dengan fs.readFileSync() tetapi saya tidak ingin mengkomitnya ke kontrol sumber saya.
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)
})
Sekarang di config.env saya, saya harus membuatnya terlihat seperti ini:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Saya harus menyimpannya sebagai string baris tunggal agar berfungsi. Tapi akhirnya saya terhubung dengan
{rejectUnauthorized:true}
Untuk variabel lingkungan platform aplikasi laut digital, saya menyalin semuanya termasuk tanda kutip ganda dan menempelkannya di sana. Tampaknya bekerja dengan baik. Saya tidak berpikir Anda akan dapat mengatur pengaturan ini ke true dengan database pengembangan $7 mereka. Saya harus memutakhirkan ke yang terkelola untuk menemukan sertifikat CA apa pun untuk diunduh.