Node.js
의 express
기반으로 서버를 구성했습니다.
express.urlencoded
, express.json
, express.static
, cookie-parser
, express-session
, 에러처리미들웨어
를 기본적으로 적용시켰습니다.
데이터 베이스관련은 sequelize
를 사용할 예정이고,
인증 관련은 passport
를 사용할 예정입니다. ( local
, kakao
, naver
, facebook
)
기존에는 CommonJs
방식을 이용했지만 이번에는 Module
방식을 이용해서 만들었습니다.
package.json
{
// 아래 코드 추가
"type": "module"
}
나머지 기본적인 설정부분에 대한 내용은 다른 곳에 정리를 했으니 링크로 대체하겠습니다.
1. express.static
2. express.urlencoded
3. express.json
4. cookieParser
5. expressSession
6. 에러처리 미들웨어
import dotenv from "dotenv";
dotenv.config();
import path from "path";
import express from "express";
import cookieParser from "cookie-parser";
import expressSession from "express-session";
import fileStore from "session-file-store";
const __dirname = path.resolve();
const FileStore = fileStore(expressSession);
const app = express();
app.set("PORT", process.env.PORT);
// middleware
app.use("/", express.static(path.join(__dirname, "public")));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(
expressSession({
resave: false,
saveUninitialized: false,
name: "session-cookie",
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
},
store: new FileStore(),
}),
);
// routes
import authRouter from "./routes/auth.js";
// router 등록
app.use("/auth", authRouter);
// 404 에러처리 미들웨어
app.use(function(req, res, next) {
console.log("404 에러처리 미들웨어");
res.status(404).send('404');
});
// 에러처리 미들웨어
app.use((error, req, res, next) => {
console.error("에러처리 미들웨어 >>", error);
res.status(500).json({ error: "Error" });
});
app.listen(app.get("PORT"), console.log(`${app.get("PORT")}번 대기중`));
React
를 사용할 땐 Module
방식이 더 편하다고 생각해서 Node.js
에서도 사용해 보자는 생각으로 사용했지만 더 까다롭고 불편하다고 느껴졌습니다.
대표적으로 Module
방식은 확장자를 생략하면 파일을 찾지 못하며, 불러온 모듈을 바로 사용하지 못해서 한 줄이 늘어나는 상황도 생깁니다.
import userRouter from "./routes/user"; // 오류
import userRouter from "./routes/user.js";
// 불러오자마자 바로 사용이 안 돼서 두 줄로 늘어남
import dotenv from "dotenv";
dotenv.config();
require("dotenv").config();