"Access denied for user localhost (using password: NO)" 当我使用 .env 文件中的变量时
"Access denied for user localhost (using password: NO)" when I use variables from .env file
我对这个失去了理智。我有我的 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 在我输入它们时向我显示这些值,只要在 [=36= 中输入用户和密码的值](但不是主机和数据库),它有效。
我是 MySQL 的新手,以前从未使用过它,我正在使用 Windows。所以如果我需要做一些命令行,你能指定我应该在哪个终端输入它们吗?
有人可以帮助我吗?
谢谢!
找到答案。
出于某种原因,这条路径:
dotenv.config({ path: './.env' })
没用。我不得不这样做:
const path = require('path')
const dotenv = require('dotenv')
dotenv.config({ path: path.join(__dirname, './.env') })
我通过对变量(process.env.HOST 等)使用 console.log()
找到了这个解决方案。它们是未定义的。
结论:总是console.log()
你的东西。
我对这个失去了理智。我有我的 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 在我输入它们时向我显示这些值,只要在 [=36= 中输入用户和密码的值](但不是主机和数据库),它有效。
我是 MySQL 的新手,以前从未使用过它,我正在使用 Windows。所以如果我需要做一些命令行,你能指定我应该在哪个终端输入它们吗?
有人可以帮助我吗?
谢谢!
找到答案。
出于某种原因,这条路径:
dotenv.config({ path: './.env' })
没用。我不得不这样做:
const path = require('path')
const dotenv = require('dotenv')
dotenv.config({ path: path.join(__dirname, './.env') })
我通过对变量(process.env.HOST 等)使用 console.log()
找到了这个解决方案。它们是未定义的。
结论:总是console.log()
你的东西。