Lv3과제를 끝내고 Lv4과제를 시작하면서 refactoring작업을 하던 중 문제가 생겼다.
**
우선 작업 내용은 이렇다.
작성을 어느정도 하고 중간점검을 하려고 node app.js를 실행하는데 아무일도 일어나지 않더니 다시 powershell의 실행이 초기화되었다.
어디에 에러가 있는지도 알려주지 않기에 난감했다.
이 때 chatGPT의 도움을 받아 app.js에서 어디서 오류를 발생시켰는지 확인할 수 있는 코드를 몇 줄 적게되었다.
// 서버를 만들기 위한 작업
const express = require('express');
const app = express();
// cookieparser
const cookieParser = require('cookie-parser');
// router
const router = require('./routes/index.js');
// config
const config = require('./config.js');
// DB - mysql
const mysql = require('./Database/db.js');
app.use(express.json());
app.use(cookieParser());
app.use('/', router);
// sequelize를 사용해 MySQL DB와 동기화 => 포트번호 확인
async () => {
(await mysql.sync()).then(() => {
app.listen(config.port, () => {
console.log(`${config.port}번 포트가 열렸습니다!`);
});
});
};
맨 마지막에 동기화하는 과정 중 에러가 발생할 수 있다는 생각을 못하고 sync가 될거라는 생각만 했다. 이래서 에러가 발생하면 발생하는 자리에 에러 메세지를 띄워주는 검증 작업이 필요하다.
// 서버를 만들기 위한 작업
const express = require('express');
const app = express();
// cookieparser
const cookieParser = require('cookie-parser');
// router
const router = require('./routes/index.js');
// config
const config = require('./config.js');
// DB - mysql
const mysql = require('./Database/db.js');
app.use(express.json());
app.use(cookieParser());
app.use('/', router);
// sequelize를 사용해 MySQL DB와 동기화 => 포트번호 확인
(async () => {
try {
await mysql.sync();
app.listen(config.port, () => {
console.log(`${config.port}번 포트가 열렸습니다!`);
});
} catch (error) {
console.error('서버 실행 중 오류가 발생했습니다:', error);
}
})();
마지막에 try / catch문을 사용하여 다시 실행해봤더니 에러를 발생시키고 어느곳에서 문제가 발생했는지 알 수 있었다.
Model작성 시 게시글(posts)에서 외래키를 Users로부터 id를 받아오는데 내가 그 컬럼을 UserId라고 설정했다. 이 부분에서 중복되는 값이니 오류가 발생한 것이다. 따라서 UserId를 userId로 변경해주니 오류가 해결되고 MySQL과 연결되고 포트가 연결이 되는것을 볼 수 있었다.