为什么 mysql 连接不适用于 dotenv 变量

Why is mysql connection not working with dotenv variables

晚上好,

我一直在尝试使用 dotenv 变量连接到我的数据库。 在我使用它之前它运行良好。

我有 2 个文件:1 个文件 mysqlConfig,我在其中放置我的数据库设置,以及 .env 我在其中放置我的变量。

我看不出我做错了什么:

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

Mysql配置:

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') 
})

好的,我刚发现问题...

我对每个变量都使用了控制台日志,但我发现我的 USER 不正确...这是我的姓氏(我不知道为什么?)

我不知道变量 USER 是保留的吗?

无论如何,这样就可以了...

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

mysql配置

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;

你的回答很有帮助,谢谢!!