[ErrorLog] dotenv .env error
🖥 Situation
nodejs에서 서버에 mysql DB를 연결할 때 환경변수를 제어하기 위해 dotenv
모듈을 이용해 .env
를 읽어들이는 과정에서 에러가 발생했다.
// index.js
require('dotenv').config();
const pool = mysql.createPool({
host: process.env.HOST,
port: process.env.PORT,
user: process.env.USER,
password: process.env.PASSWORD,
database: process.env.DATABASE,
})
// .env
HOST=localhost
PORT=3306
USER=root
PASSWORD=password
DATABASE=dev
dotenv
도 잘 import 하고, .env
경로도 확인하고, 환경변수들도 제대로 넣은 것 같은데 계속 에러가 떠서 도무지 원인이 뭔지 알 수 없었다.
🆘 Error
❗️ Error message의 내용은 아래와 같았다.
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
sqlMessage: "Access denied for user 'yooni'@'localhost' (using password: YES)",
sql: undefined
}
node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "#<Object>".] {
code: 'ERR_UNHANDLED_REJECTION'
}
💡 Solution
1045 error
는 비밀번호가 틀렸을 때 발생할 수 있다고 한다. 그런데 아무리 확인해도 비밀번호는 절대 틀리지 않았다..😥
.env
에서 설정한 5개의 환경변수(HOST
, PORT
, USER
, PASSWORD
, DATABASE
)를 각각 하나씩만 적용해가면서 특정 변수에 문제가 있는지 확인해보기로 했다.
놀랍게도 다른 변수들은 괜찮았는데 USER
에서 에러가 발생했다!
어디선가 USER
는 시스템 예약어일 수 있다고 한 것이 생각나서, USER
-> DB_USER
로 바꾸어 보았더니... 더이상 에러가 발생하지 않았다 😏
Author And Source
이 문제에 관하여([ErrorLog] dotenv .env error), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yooni/ErrorLog-dotenv-환경변수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)