Flare-k

Connecting Server

1 +{
2 + "presets": ["@babel/preset-env"]
3 +}
4 +/*
5 +원하는 node.js와 JS와 관련된 모든 설정을 집어넣는다.
6 + 파일은 Babel을 설정하는 곳이다. Babel이 실행되기 전에 파일을 찾아보고
7 +설정해둔 Preset을 읽고 이해한다. Preset에 따라 변환한다.
8 +*/
...\ No newline at end of file ...\ No newline at end of file
1 +import "@babel/polyfill";
2 +import dotenv from "dotenv";
3 +import express from "express";
4 +import morgan from "morgan";
5 +import helmet from "helmet";
6 +import cookieParser from "cookie-parser";
7 +import bodyParser from "body-parser";
8 +import mongoose from "mongoose";
9 +import session from "express-session";
10 +import flash from "express-flash";
11 +import MongoStore from "connect-mongo";
12 +import { localsMiddleware } from "./middlewares";
13 +import routes from "./routes";
14 +
15 +dotenv.config();
16 +const app = express();
17 +
18 +const CokieStore = MongoStore(session);
19 +
20 +app.use(helmet());
21 +app.set("view engine", "pug");
22 +app.use("/uploads", express.static("uploads"));
23 +app.use("/static", express.static("static"));
24 +app.use(cookieParser());
25 +app.use(bodyParser.json());
26 +app.use(bodyParser.urlencoded({ extended: true })); // json, html, text, urlencoded 할 거 없이 다 parser할 수 있도록 설정해줘야 한다.
27 +app.use(morgan("dev"));
28 +
29 +app.use(
30 + session({
31 + secret: process.env.COOKIE_SECRET,
32 + resave: true,
33 + saveUninitialized: false,
34 + store: new CokieStore({ mongooseConnection: mongoose.connection }),
35 + })
36 +);
37 +app.use(flash());
38 +//app.use(passport.initialize());
39 +//app.use(passport.session());
40 +
41 +app.use(localsMiddleware);
42 +
43 +export default app; // 파일을 불러올때 app object를 준다는 의미.
File mode changed
1 +/* eslint-disable no-console */
2 +import mongoose from "mongoose";
3 +import dotenv from "dotenv";
4 +
5 +dotenv.config();
6 +
7 +mongoose.connect(process.env.MONGO_URL, {
8 + useNewUrlParser: true,
9 + useFindAndModify: false,
10 +});
11 +
12 +const db = mongoose.connection;
13 +
14 +const handleOpen = () => {
15 + console.log("✅ Connected to DB");
16 +};
17 +const handleError = (error) =>
18 + console.log(`🔴 Error on DB Connection: ${error}`);
19 +
20 +db.once("open", handleOpen); // connection을 열고 성공여부를 확인할 수 있는 function을 만들 것이다.
21 +db.on("error", handleError);
1 -console.log("hi");
...\ No newline at end of file ...\ No newline at end of file
1 +import dotenv from "dotenv";
2 +import app from "./app"; // app.js에서 export default app했기 때문에 불러올 수 있다.
3 +import "./db";
4 +
5 +dotenv.config();
6 +const PORT = process.env.PORT || 80;
7 +
8 +const handleListening = () => {
9 + console.log(`✅ Listening on: http://localhost:${PORT}`);
10 + // call-back함수.
11 + // PORT를 listen하기 시작할 때 함수를 호출해준다.
12 +};
13 +
14 +app.listen(PORT, handleListening);
1 +import dotenv from "dotenv";
2 +import multer from "multer";
3 +import multerS3 from "multer-s3";
4 +import aws from "aws-sdk";
5 +import routes from "./routes";
6 +
7 +dotenv.config();
8 +
9 +const s3 = new aws.S3({
10 + accessKeyId: process.env.AWS_KEY,
11 + secretAccessKey: process.env.AWS_PRIVATEE_KEY,
12 + region: "ap-northeast-2",
13 +});
14 +
15 +export const localsMiddleware = (req, res, next) => {
16 + res.locals.siteName = "my Storage";
17 + res.locals.routes = routes;
18 + res.locals.loggedUser = req.user || null;
19 + // console.log(req);
20 + next();
21 +};
22 +
23 +export const onlyPublic = (req, res, next) => {
24 + if (req.user) {
25 + res.redirect(routes.home);
26 + } else {
27 + next();
28 + }
29 +};
30 +export const onlyPrivate = (req, res, next) => {
31 + if (req.user) {
32 + next();
33 + } else {
34 + res.redirect(routes.home);
35 + }
36 +};
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 "fetchSpec": "^8.2.0" 16 "fetchSpec": "^8.2.0"
17 }, 17 },
18 "_requiredBy": [ 18 "_requiredBy": [
19 + "#USER",
19 "/" 20 "/"
20 ], 21 ],
21 "_resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", 22 "_resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
......
1 { 1 {
2 - "name": "KYW", 2 + "name": "rokkyw",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
......
File mode changed
1 +const path = require("path");
2 +const autoprefixer = require("autoprefixer");
3 +const ExtractCSS = require("extract-text-webpack-plugin");
4 +
5 +const MODE = process.env.WEBPACK_ENV;
6 +const ENTRY_FILE = path.resolve(__dirname, "assets", "js", "main.js");
7 +const OUTPUT_DIR = path.join(__dirname, "static");
8 +
9 +const config = {
10 + entry: ["@babel/polyfill", ENTRY_FILE],
11 + mode: MODE,
12 + module: {
13 + rules: [
14 + {
15 + test: /\.{js}$/,
16 + use: [
17 + {
18 + loader: "babel-loader",
19 + },
20 + ],
21 + },
22 + {
23 + test: /\.(scss)$/,
24 + use: ExtractCSS.extract([
25 + {
26 + loader: "css-loader",
27 + },
28 + {
29 + loader: "postcss-loader",
30 + options: {
31 + plugins() {
32 + return [autoprefixer({ browsers: "cover 99.5%" })];
33 + },
34 + },
35 + },
36 + {
37 + loader: "sass-loader",
38 + },
39 + ]),
40 + },
41 + ],
42 + },
43 + output: {
44 + path: OUTPUT_DIR,
45 + filename: "[name].js",
46 + },
47 + plugins: [new ExtractCSS("style.css")],
48 +};
49 +
50 +module.exports = config;