Я не могу подключиться к базе данных mysql с помощью process.env.variable

#mysql #node.js #database #configuration #dotenv

#mysql #node.js #База данных #конфигурация #dotenv

Вопрос:

мой файл config.env

 PORT=5000
DB_HOST='localhost'
DB_PORT=3306
DB_USER='root'
DB_PASSWORD='fast'
DB_NAME='hms'
 

мой файл dbconnect (в том же каталоге, что и файл config.env)
Я не могу подключиться с помощью process.env, но если я напрямую введу значения, как я сделал в прокомментированном коде, тогда он подключится к базе данных. Также, если я консоль.регистрируйте значения process.env.anyvariable, тогда я получу правильное значение переменной env, но если я присвою его некоторой переменной, например, предположим, const variable=process.env.DB_HOST , тогда оно не будет определено в console.log. Это выдает мне эту ошибку

 code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlMessage: "Access denied for user ''@'localhost' (using password: NO)",
  sqlState: '28000',
  fatal: true
 
 const mysql = require("mysql")
const dotenv = require("dotenv")

dotenv.config({ path: './config.env' });

const connection = mysql.createConnection({
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
})

// const connection = mysql.createConnection({
//     host: 'localhost',
//     port: 3306,
//     user: 'root',
//     password: 'fast',
//     database: 'hms'
// })

connection.connect( (err) => {
    if (err){
        console.log(err)
    }
    else
    {
        console.log("Database connected!")
    }
})
 

Ответ №1:

мой /config/config.env не находится в родительской директории, поэтому вместо

 dotenv.config({ path: './config.env' });
 

напишите

 dotenv.config({ path: __dirname   '/config.env' });