인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

이승주님의 프로필 이미지
이승주

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

로그인 문제 해결하기

회원 가입후 다른 기능들이 오류가 발생합니다.

작성

·

228

0

안녕하세요~ 강의 열심히 듣는 중에 오류가 발생하여 문의 드립니다. 혼자 열심히 해봤는데 이부분은 잘 모르겠습니다. ㅠㅠ 

회원가입 후에 아래와 같은 오류가 발생하더니 로그인도 안되고 다른 메뉴를 클릭해도 페이지가 넘어가지 않습니다. DB를 확인하여 회원가입은 기능은 정상적으로 작동된것을 확인하였습니다. 확인 좀 부탁드리겠습니다.

답변 2

0

이승주님의 프로필 이미지
이승주
질문자

와 답변 감사드립니다.ㅠㅠ 설명해주신거 꼭 기억 하겠습니다~ 감사합니다

0

이승주님의 프로필 이미지
이승주
질문자

<routes/user.js>


const express = require("express");

const router = express.Router();
const bcrypt = require("bcrypt");
const passport = require("passport");

const { User, Post, Image, Comment } = require("../models");
 

 
 
router.post("/login", (req, res, next) => {
  passport.authenticate("local", (err, user, info) => {
    if (err) {
      console.error(err);
      //서버 에러
      return next(err);
    }
    if (info) {
 
      return res.status(401).send(info.reason);
    }
    return req.login(user, async (loginErr) => {
 
      if (loginErr) {
        console.error(loginErr);
        return next(loginErr);
      }
      const fullUserWithoutPassword = await User.findOne({
        where: { id: user.id },
        attributes: {
          exclude: ["password"],
        },
        include: [
          {
            model: Post,
       
          },
          {
            model: User,
            as: "Followings",
          
          },
          {
            model: User,
            as: "Followers",
         
          },
        ],
      });
      return res.status(200).json(fullUserWithoutPassword);

 
    });
  })(req, res, next);
});

router.post("/", async (req, res, next) => {
 

 
  try {
  
    const exUser = await User.findOne({
      where: {
        email: req.body.email,
      },
    });
    if (exUser) {
  
      return res.status(403).send("이미 사용 중인 아이디입니다.");
    }
  
    const hashedPassword = await bcrypt.hash(req.body.password, 12);
    await User.create({
      email: req.body.email,
      nickname: req.body.nickname,
      password: hashedPassword,
    });
    res.status(201).send("ok");
  } catch (error) {
    console.error(error);
    next(error); // status 500
  }
  res.send("ok");
});

router.post("/logout", (req, res) => {
  req.logout();
  req.session.destroy();
  res.send("ok");
});
module.exports = router;
제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

회원가입 코드에서 마지막 res.send('ok') 빼세요. res.send를 두 번 호출하면 저 에러가 발생합니다. 그래서 이 때 서버가 터져서 로그인때도 에러가 난 겁니다. res.send나 res.json은 한 번만 호출되어야합니다.

이승주님의 프로필 이미지
이승주

작성한 질문수

질문하기