소개
게시글
질문&답변
로그인 후에 화면 변화가 없습니다
저도 로그인 후 화면이 바뀌지 않습니다.app.jsconst express = require("express"); const cookieParser = require("cookie-parser"); const morgan = require("morgan"); const path = require("path"); const session = require("express-session"); const dotenv = require("dotenv"); //최대한 위에 const nunjucks = require("nunjucks"); //db 객체 안에 sequelize 연결 const { sequelize } = require("./models"); dotenv.config(); //process.env const pageRouter = require("./routes/page"); const { options } = require("../ch8/8.6/learn-mongoose/routes"); const passport = require("passport"); const passportConfig = require("./passport"); const authRouter = require("./routes/auth"); const postRouter = require("./routes/post"); const app = express(); passportConfig(); app.set("port", process.env.PORT || 8001); app.set("view engine", "html"); nunjucks.configure("views", { express: app, watch: true, }); sequelize .sync() .then(() => { console.log("데이터베이스 연결 성공"); }) .catch((err) => { console.log(err); }); app.use(morgan("dev")); //개발자 모드 로깅, 실제 운영시에는 필요한 로그만 왜냐면 서버용량 많이 차지 app.use(express.static(path.join(__dirname, "public"))); //public폴더를 statc으로, 프론트에서 public을 자유롭게 접근할 수 있도록 app.use(express.json()); //json 요청 받을 수 있음, req.body를 ajax json 요청으로부터 app.use(express.urlencoded({ extended: false })); //req.body 폼으로부터 app.use(cookieParser(process.env.COOKIE_SECRET)); app.use( session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, //js에서 접근 못할때 secure: false, //나중에 true로 바꾸기 }, }) ); app.use(passport.initialize()); app.use(passport.session()); //connect.sid라는 이름으로 세션 쿠키가 브라우저에 전송 app.use("/", pageRouter); //루트 app.use("/auth", authRouter); //auth/join으로 사용가능 app.use("/post", postRouter); //없는 페이지 온 경우 app.use((req, res, next) => { const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`); error.status = 404; next(error); }); //에러처리 미들웨어 app.use((err, req, res, next) => { res.locals.message = err.message; res.locals.error = process.env.NODE_ENV !== "production" ? err : {}; // 배포모드가 아닐때 에러 표시, 배포시에는 에러 로그를 서비스에 넘긴다. 사용자 화면에 에러 화면을 보내는 것은 안좋음 res.status(err.status || 404); res.render("error"); }); app.listen(app.get("port"), () => { console.log(app.get("port"), "빈포트에서 대기중"); }); routes > auth.jsconst express = require("express"); const passport = require("passport"); const { isLoggedIn, isNotLoggedIn } = require("../middlewares"); const { join, login, logout } = require("../controllers/auth"); const router = express.Router(); // POST /auth/join router.post("/join", isNotLoggedIn, join); // POST /auth/login router.post("/login", isNotLoggedIn, login); // GET /auth/logout router.get("/logout", isLoggedIn, logout); // GET /auth/kakao router.get("/kakao", passport.authenticate("kakao")); // GET /auth/kakao/callback router.get( "/kakao/callback", passport.authenticate("kakao", { failureRedirect: "/?error=카카오로그인 실패", }), (req, res) => { res.redirect("/"); // 성공 시에는 /로 이동 } ); module.exports = router; routes> page.js const express = require("express"); const router = express.Router(); const { renderJoin, renderMain, renderProfile, } = require("../controllers/page"); const { isLoggedIn, isNotLoggedIn } = require("../middlewares"); router.use((req, res, next) => { res.locals.user = null; //사용자 정보 res.locals.followerCount = 0; res.locals.followingCount = 0; res.locals.followingIdList = 0; next(); //를 꼭 써야함 }); router.get("/profile", isLoggedIn, renderProfile); router.get("/join", isNotLoggedIn, renderJoin); router.get("/", renderMain); module.exports = router; controller > auth.jsconst User = require("../models/user"); const bcrypt = require("bcrypt"); const passport = require("passport"); exports.join = async (req, res, next) => { const { nick, email, password } = req.body; try { const exUser = await User.findOne({ where: { email } }); if (exUser) { return res.redirect("/join?error=exist"); } const hash = await bcrypt.hash(password, 12); await User.create({ email, nick, password: hash, }); return res.redirect("/"); //302 } catch (error) { console.error(error); next(error); } }; exports.login = (req, res, next) => { passport.authenticate("local", (authError, user, info) => { if (authError) { //서버실패 console.error(authError); return next(authError); } if (!user) { //로직실패 return res.redirect(`/?loginError=${info.message}`); } return req.login(user, (loginError) => { //로그인 성공 if (loginError) { console.error(loginError); return next(loginError); } return res.redirect(`/`); }); })(req, res, next); //authError:서버실패, user:성공유저, info:로직실패 }; exports.logout = (req, res, next) => { //세션쿠키를 없애버림 req.logout(() => { res.redirect("/"); }); }; controller > page.js exports.renderProfile = (req, res, next) => { //서비스를 호출 res.render("profile", { title: "내 정보 - NodeBird" }); }; exports.renderJoin = (req, res, next) => { res.render("join", { title: "회원가입 - NodeBird" }); }; exports.renderMain = (req, res, next) => { res.render("main", { title: "NodeBird", twits: [] }); }; //라우터 -> 컨트롤러(요청,응답 안다) -> 서비스(요청,응답, 모른다)
- 0
- 3
- 90
질문&답변
11:48초 부분 질문입니다.
제로초님,저도 위 질문과 동일한 생각이 들었었는데요 그러면 void가 코드읽는 사람에게 어떤 값을 반환하지 않는 것을 명시적으로 알려주는 용도라고 이해하면 될까요?
- 0
- 2
- 267
질문&답변
안드로이드빌드 에러
저도 같은 문제가 발생해서요ㅠ 강사님이 보내주신 티스토리를 참고해서 해봤는데도 아래와 같은 에러가 뜹니다. 혹시 제가 경로를 '/Users/mm/food-delivery~'로 하지 않은 문제도 있을까요? ㅠIncluded build '/Users/mm/Desktop/study/food-delivery-app/setting/node_modules/react-native-gradle-plugin' does not exist.* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 2s at makeError (/Users/mm/Desktop/study/food-delivery-app/setting/node_modules/@react-native-community/cli-platform-android/node_modules/execa/index.js:174:9) at /Users/mm/Desktop/study/food-delivery-app/setting/node_modules/@react-native-community/cli-platform-android/node_modules/execa/index.js:278:16 at processTicksAndRejections (node:internal/process/task_queues:96:5) at async runOnAllDevices (/Users/mm/Desktop/study/food-delivery-app/setting/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:109:5) at async Command.handleAction (/Users/mm/Desktop/study/food-delivery-app/setting/node_modules/@react-native-community/cli/build/index.js:192:9)
- 0
- 2
- 4.4K