앞서 server.js 파일을 작성 했다면 다음으로 db연결을 하고 서버를 실행해보자.
여기에서는 MongoDB를 로컬에서 설치해서 사용하는 방법으로 한다. ( 아직 미설치시 )
설치가 되었다고 보고 진행한다.
| MongoDB 연결
backend/config/db.js
// backend/config/db.js
const mongoose = require('mongoose');
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI);
console.log(`✅ MongoDB Connected: ${conn.connection.host}`);
} catch (error) {
console.error(`❌ MongoDB Connection Error: ${error.message}`);
process.exit(1);
}
};
module.exports = connectDB;
.env에 저장한 MONGO_URI를 이용해 MongoDB에 연결된다.
연결 성공/실패를 로그로 출력되도록 작성한다.
| .env 파일 수정하기 ( MongoDB주소 입력 )
PORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/myapp
JWT_SECRET=your_jwt_secret_key
127.0.0.1:27017은 기본 로컬 MongoDB 포트이다.
myapp은 사용할 데이터베이스 이름을 적으면 된다. (없는 이름이면 Mongo가 알아서 만들어줌)
| MongoDB 서버 켜기
MongoDB는 설치할 때 기본적으로 "MongoDB Server" 라는 서비스를 등록되서 자동으로 백그라운드에서 실행된다.
만약, MongoDB Server 실행 상태 확인하려면 여기 참고.
| 서버 실행 테스트 ( 에러 해결 )
npm run dev
기대와 달리 성공적으로 서버가 실행되지 않았다.
문제1)
TypeError: argument handler must be a function at Function.use .... 이런 에러 메시지가 뜬다.
app.use()에 함수 대신 잘못된 타입(예: undefined나 객체 등) 을 넣었다는 뜻이다.
해결1)
postRoutes에서 module.exports = router 안 했거나,
라우터 파일이 아예 없거나,
라우터가 아닌 객체를 내보냈을 경우 이런 에러가 난다.
지금의 경우는 라우터 파일만 만들어두고 아직 안에 아무것도 작성하지 않아서이다.
server.js에 라우트를 등록했으니 불러올 수 있게 코드를 작성해야 한다.
backend/routes/authRoutes.js
const express = require('express');
const router = express.Router();
router.post('/login', (req, res) => {
res.send('로그인');
});
module.exports = router;
backend/routes/postRoutes.js
const express = require('express');
const router = express.Router();
// 예시 라우터
router.get('/', (req, res) => {
res.send('게시글 목록');
});
module.exports = router;
임시로 기본 라우터를 작성하고 다시 서버를 실행해 보았다.
문제2)
TypeError: app.use() requires a middleware function at Function.use ... 이런 메시지가 뜬다.
app.use()를 호출할 때 "함수" 가 와야 하는데, 다른 데이터가 오고 있다는 뜻이다.
해결2)
역시, server.js에 등록된 미들웨어 관련 파일작성을 하지 않아서이다.
backend/middleware/errorHandler.js
// backend/middleware/errorHandler.js
const errorHandler = (err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ message: err.message || 'Server Error' });
};
module.exports = errorHandler;
성공!!
node server가 정상적으로 실행되어 MongoDB도 연결되었음을 알 수 있다.
'STUDY > Project' 카테고리의 다른 글
NodeJS, MongoDB, react 회원가입, 로그인, 게시판 구현 플로우 (0) | 2025.04.30 |
---|---|
회원가입, 로그인 로직 - User, authController, authRoutes (0) | 2025.04.30 |
서버 시작 파일 및 환경변수 파일 작성 - server.js, .env, nodemon설정 (0) | 2025.04.29 |
nodejs react 프로젝트 기본 구조 구성 및 설치 (0) | 2025.04.28 |
프로젝트 폴더 구조 구성하기 (0) | 2025.04.26 |