bluegram - 백엔드 초기 세팅

박상은·2021년 12월 15일
0

🍃 blegram

목록 보기
8/20

1. 구현 사항

Node.jsexpress 기반으로 서버를 구성했습니다.
express.urlencoded, express.json, express.static, cookie-parser, express-session, 에러처리미들웨어를 기본적으로 적용시켰습니다.

데이터 베이스관련은 sequelize를 사용할 예정이고,
인증 관련은 passport를 사용할 예정입니다. ( local, kakao, naver, facebook )

2. 기본 세팅 코드

기존에는 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")}번 대기중`));

마무리

1. 어렵고 힘들었던 점

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();

0개의 댓글