[ErrorLog] dotenv .env error

4033 단어 errorlogerrorlog

🖥 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로 바꾸어 보았더니... 더이상 에러가 발생하지 않았다 😏


좋은 웹페이지 즐겨찾기