KDT/project

[MarkYour2022/backend] 1. node.js 서버 기초세팅

ebulsok 2022. 10. 21. 21:28
npm init -y
npm i --save-dev prettier eslint eslint-config-airbnb-base eslint-plugin-import typescript @types/node @types/express nodemon ejs
npm i express express-session dotenv mongodb passport passport-google-oauth20 passport-kakao passport-naver
// .prettierrc
{
    "semi": true,
    "singleQuote": true
}


// .vscode/setting.json
{
    "[javascript]": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    }
}

// .eslintrc.js
module.exports = {
  extends: ['airbnb-base'],
  rules: {
    'linebreak-style': 0, // 윈도우 필수
    'no-console': 'off', // 콘솔로그 사용
    'prefer-destructuring': 'off', // 구조분해할당문법
  },
};

// package.json
"main": "app.js",
"scripts": {
    "server": "nodemon src/main.js",
    "dev": "nodemon --watch \"./src/*.js\" --exec \"npm run server\""
 },

 

폴더구조

 

app.js

// @ts-check
const express = require('express');

require('dotenv').config();

const app = express();
const PORT = process.env.PORT;

const router = require('./routes/index');

app.set('view engine', 'ejs');
app.set('views', 'views');

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static('public'));

app.use('/', router);

app.use((err, req, res, next) => {
  console.log(err.stack);
  res.status(err.statusCode || 500);
  res.send(err.message);
});

app.listen(PORT, () => {
  console.log(`${PORT}번 서버`);
});

 

routes/index.js

// @ts-check
const express = require('express');

const router = express.Router();

router.get('/', (req, res) => {
  res.render('index');
});

module.exports = router;

 

views/index.ejs

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h1>Back</h1>
</body>

</html>

 

routes/mongo.js

// @ts-check
const { MongoClient, ServerApiVersion } = require('mongodb');

const uri = process.env.DB_URI;

const client = new MongoClient(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  serverApi: ServerApiVersion.v1,
});

module.exports = client;