NodeJS и Express: «Ошибка: самоподписанный сертификат» - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в 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)

Я пробовал несколько решений ...

Игнорировать недопустимый самоподписанный сертификат ssl в node.js с https.request?

nodejs - ошибка самоподписанного сертификата в цепочке сертификатов

Но ни один из них, похоже, не работает. Кто-нибудь может мне помочь?

Заранее спасибо. :)

1 Ответ

1 голос
/ 09 мая 2020

Можешь попробовать, export NODE_TLS_REJECT_UNAUTHORIZED=0 в командной строке? Это устанавливает свойство глобально, а не process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;, которое устанавливает свойство для этого конкретного процесса. Надеюсь, вы также выполнили npm config set strict-ssl false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...