Được rồi, cuối cùng tôi đã có thể tìm ra nó. Tôi nghĩ rằng vấn đề là đa chiều và chỉ là dotenv không quen thuộc với môi trường đang phát triển tại địa phương của tôi.
Tôi đã có thể làm cho tất cả hoạt động với mã của tôi như thế này. Nó cũng hoạt động với fs.readFileSync () nhưng tôi không muốn cam kết điều đó với quyền kiểm soát nguồn của mình.
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)
})
Bây giờ trong config.env của tôi, tôi phải làm cho nó trông như thế này:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n
AFTER EACH LINE\n-----END CERTIFICATE-----"
Tôi đã phải giữ nó dưới dạng một chuỗi dòng đơn để nó hoạt động. Nhưng cuối cùng tôi đã kết nối với
{rejectUnauthorized:true}
Đối với biến môi trường nền tảng ứng dụng đại dương kỹ thuật số, tôi đã sao chép mọi thứ bao gồm cả dấu ngoặc kép và dán vào đó. Có vẻ hoạt động tốt. Mặc dù vậy, tôi không nghĩ rằng bạn sẽ có thể đặt cài đặt này thành true với cơ sở dữ liệu phát triển $ 7 của họ. Tôi đã phải nâng cấp lên cái được quản lý để tìm bất kỳ chứng chỉ CA nào để tải xuống.