为什么mysql连接不能使用dotenv变量

为什么mysql连接不能使用dotenv变量,sql,node.js,dotenv,Sql,Node.js,Dotenv,晚上好, 我一直在尝试使用dotenv变量连接到我的数据库。 在我使用它之前,它工作得很好 我有2个文件:1个文件mysqlConfig,我把我的数据库设置放在那里,还有.env,我把我的变量放在那里 我看不出我做错了什么: SOCKET_PATH='/Applications/MAMP/tmp/mysql/mysql.sock' USER='root' PASSWORD='root' HOST='localhost' DATABASE='Groupomania' MysqlConfig: r

晚上好,

我一直在尝试使用dotenv变量连接到我的数据库。 在我使用它之前,它工作得很好

我有2个文件:1个文件mysqlConfig,我把我的数据库设置放在那里,还有.env,我把我的变量放在那里

我看不出我做错了什么:

SOCKET_PATH='/Applications/MAMP/tmp/mysql/mysql.sock'
USER='root'
PASSWORD='root'
HOST='localhost'
DATABASE='Groupomania'
MysqlConfig:

require('dotenv').config();
var mysql = require('mysql');

// Connexion à MYSQL
var bdd = mysql.createConnection({
  socketPath : process.env.SOCKET_PATH,
  user : process.env.USER,
  password : process.env.PASSWORD,
  host : process.env.HOST,
  database : process.env.DATABASE
});

module.exports = bdd;
谢谢你的帮助


祝您晚上愉快

可能是因为
dotenv
软件包找不到您的
.env
文件

尝试打印任何变量,看看它是否未定义。如果是,我的假设是正确的

console.log(process.env['SOCKET_PATH'])
在这种情况下,您需要手动指定.env文件的相对路径。这可以通过向配置函数传递一个选项对象来完成,该对象包含以下属性路径:

const path = require('path')
require('dotenv').config({ 
   path: path.resolve(__dirname, '../../.env') 
})

这可能是因为
dotenv
包无法找到您的
.env
文件

尝试打印任何变量,看看它是否未定义。如果是,我的假设是正确的

console.log(process.env['SOCKET_PATH'])
在这种情况下,您需要手动指定.env文件的相对路径。这可以通过向配置函数传递一个选项对象来完成,该对象包含以下属性路径:

const path = require('path')
require('dotenv').config({ 
   path: path.resolve(__dirname, '../../.env') 
})

好的,我刚发现问题

我对每个varibales使用控制台日志,直到我发现我的用户不是正确的用户。。。这是我的姓(我不知道为什么?)

我不知道变量用户是不是有点保留

不管怎么说,这种方式是有效的

SOCKET_PATH='/Applications/MAMP/tmp/mysql/mysql.sock'
USERDB='root'
PASSWORD='root'
HOST='127.0.0.1'
DATABASE='Groupomania'
mysqlConfig

require('dotenv').config();
var mysql = require('mysql');

// Connexion à MYSQL
var bdd = mysql.createConnection({
  socketPath : process.env.SOCKET_PATH,
  user : process.env.USERDB,
  password : process.env.PASSWORD,
  host : process.env.HOST,
  database : process.env.DATABASE
});

module.exports = bdd;

你的回答帮助很大,谢谢

好吧,我刚发现问题

我对每个varibales使用控制台日志,直到我发现我的用户不是正确的用户。。。这是我的姓(我不知道为什么?)

我不知道变量用户是不是有点保留

不管怎么说,这种方式是有效的

SOCKET_PATH='/Applications/MAMP/tmp/mysql/mysql.sock'
USERDB='root'
PASSWORD='root'
HOST='127.0.0.1'
DATABASE='Groupomania'
mysqlConfig

require('dotenv').config();
var mysql = require('mysql');

// Connexion à MYSQL
var bdd = mysql.createConnection({
  socketPath : process.env.SOCKET_PATH,
  user : process.env.USERDB,
  password : process.env.PASSWORD,
  host : process.env.HOST,
  database : process.env.DATABASE
});

module.exports = bdd;

你的回答帮助很大,谢谢

process.env
表示机器中的环境变量。它是一个列表,Nodejs总是从系统中获取变量值,如果它不存在,则作为回退查看您的.env文件配置。如果您尝试在终端中运行
echo$USER
,它将打印与您以前遇到的值相同的值(假设您在linux机器上)。这就是你没有从你的.env文件中获取值的原因,因为它已经被声明了。
process.env
表示你机器中的环境变量。它是一个列表,Nodejs总是从系统中获取变量值,如果它不存在,则作为回退查看您的.env文件配置。如果您尝试在终端中运行
echo$USER
,它将打印与您以前遇到的值相同的值(假设您在linux机器上)。这就是为什么你没有从你的.env文件中获取值,因为它已经被声明了。