express를 사용해서 서버를 구성하던중 port번호는 env에 저장해서 사용하려고 했다.
그런데 계속 localhost:3000이 오류가 발생했다.
실행했던 코드는 아래와 같다.
// app.js
const express = require("express");
const app = express();
const dotenv = require("dotenv");
dotenv.config();
app.listen(process.env.PORT);
발생할 수 있는 원인은 아래와 같다.
1. PORT번호 다름
//.env
PORT=3000
포트번호는 잘 들어갔으니 문제가 되지 않는다.
2. 모듈이 정상적으로 다운로드가 안됨
//package.json
{
"dependencies": {
"dotenv": "^16.4.5",
"express": "^4.19.2",
"express-validator": "^7.1.0",
"jsonwebtoken": "^9.0.2",
"mysql2": "^3.9.7"
}
}
package.json을 보면 dotenv와 express 모두 잘 다운받아졌음을 확인할 수 있었다.
그럼 어떤 문제로 사이트에 연결되지 않았을까 구글링을 해보던 중 나도 env에 저장되어 있는 port번호를 출력해보았다.
const express = require("express");
const app = express();
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.PORT);
app.listen(process.env.PORT);
결과는 process.env.PORT는 undefined이 출력됐다.
해결
.env 파일은 최상단으로 놓으라고 해서 그렇게 해주었는데도 불구하고 사이트에 연결이 안된건데...
node 실행할때의 경로가 app.js가 있는 경로와 달랐기 때문에 발생한 오류였다🫨
/a/b/app.js
/a/b/.env
의 경로도 되어있으면 /a에서 계속 node 실행하고 있었던 것...
실행은 잘 되지만 결국 해당 경로에서는 .env가 최상단에 있는 것이 아니니 오류가 발생한 것이었다.
경로 설정 잘해주니 .env이 최상단에 위치하게 되어 실행이 잘 됐다.
즉, 실행 경로 위치 잘 확인하시길!!
.env 파일은 왜 프로젝트 최상단에 위치해야하는걸까?
.env을 프로젝트의 최상위에 위치해놓으면 환경변수들이 한 곳에 모여 있기 때문에 유지보수하기 좋다.
하지만 꼭 최상단에 놓지 않더라도 경로 설정을 해주면 다른 곳에다가고 env파일을 위치시킬 수 있다.
require("dotenv").config({ path: "/config/.env" })
'오류해결' 카테고리의 다른 글
TypeError: Cannot destructure property '변수명' of 'req.body' as it is undefined. (0) | 2024.06.02 |
---|---|
express에서 API 구현시 URL parameters 받는 방법 (0) | 2024.05.29 |
mariaDB와 workbench 연동 오류 (0) | 2024.05.10 |
[Fluter] solved - PlatformException 오류 해결 (2) | 2023.11.21 |
[Flutter] Solved - flutter doctor 오류(Xcode - cocoapods) (0) | 2023.11.21 |