"Access denied for user localhost (using password: NO)"当我使用 .env 文件中的变量时



我都快疯了。我有我的app.js创建一个连接到mysql。它可以像这样工作:

app.js

const path = require('path')
const hbs = require('hbs')
const express = require('express')
const mysql = require('mysql')
const app = express()
const port = process.env.PORT || 3000
const db = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "test"
});
db.connect((error) => {
if(error) throw error
console.log("MYSQL Connected")
})

但是这个不行:

app.js

const path = require('path')
const hbs = require('hbs')
const express = require('express')
const dotenv = require('dotenv')
const mysql = require('mysql')
dotenv.config({ path: './.env' })
const app = express()
const port = process.env.PORT || 3000
const db = mysql.createConnection({
host: process.env.HOST,
user: process.env.USER,
password: process.env.PASSWORD,
database: process.env.DATABASE
});
db.connect((error) => {
if(error) throw error
console.log("MYSQL Connected")
})

.env

DATABASE = test
HOST = localhost
USER = root
PASSWORD = password

它识别我存储在我的。env文件中的值,因为我的IDE在我输入它们时显示了我的值,并且只要用户&密码是在app.js中输入的(但不是主机和数据库),它可以工作。

我是MySQL的新手,从来没有使用过它,我在Windows上。因此,如果我需要执行一些命令行,您能指定我应该在哪个终端中键入它们吗?

有人能帮帮我吗?

谢谢你!

找到答案了

由于某些原因,这个路径:

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

不工作。我必须这样做:

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

我通过在变量(process.env.)上使用console.log()找到了这个解决方案。主机等等……)。

结论:永远console.log()你的东西。

最新更新