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;