NodeJS和Express:"Error: self signed certificate"



我是NodeJS的初学者,我有一个非常简单的Node/Express应用程序,它使用PostGreSQL作为数据库。我的"db.js"文件如下:

const { Pool } = require('pg');
module.exports = new Pool({
user: 'postgres',
password: 'xxxx',
host: 'localhost',
port: 5432,
database:'gymmanager'
});

当我只在本地运行时,一切都很好,所以我决定将应用程序部署到Heroku。为了做到这一点,我创建了一个.env文件,其中包含用于开发的环境变量。这是.env文件:

NODE_ENV=dev
DB_USER='postgres'
DB_PASS='xxxx'
DB_HOST='localhost'
DB_PORT=5432
DB_DATABASE='gymmanager'

我已经更改了我的"db.js"文件,现在看起来是这样的:

if(process.env.NODE_ENV !== 'dev') {
const { Client } = require('pg');
const client = new Client({  
connectionString: process.env.DATABASE_URL,
ssl: true
});
client.connect();
module.exports = client;
} else {
require('dotenv').config();
const { Pool } = require('pg');
module.exports = new Pool({
user: process.env.DB_USER,
password: process.env.DB_PASS,
host: process.env.DB_HOST,
port: process.env.DB_PORT,
database: process.env.DB_DATABASE,
rejectUnauthorized: false
});    
}

我的应用程序已经部署并在Heroku上顺利运行,但现在,当我在本地运行"npm-start"时,我会收到以下错误:

(node:12989) UnhandledPromiseRejectionWarning: Error: self signed certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1491:34)
at TLSSocket.emit (events.js:315:20)
at TLSSocket._finishInit (_tls_wrap.js:933:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:691:12)

我已经尝试了几种解决方案。。。

是否使用https.request忽略node.js中无效的自签名ssl证书?

nodejs-错误证书链中的自签名证书

但它们似乎都不起作用。有人能帮我吗?

提前感谢。:(

你能试试命令行上的export NODE_TLS_REJECT_UNAUTHORIZED=0吗?这将全局设置属性,而不是process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;,后者将属性设置为该特定进程。希望你也执行npm config set strict-ssl false

相关内容

最新更新