inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

백엔드 회원가입 구현 중 에러

570

이원영

작성한 질문수 3

0

[제로초 강좌 질문 필독 사항입니다]
질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.
도움이 되는 질문을 하는 방법을 알려드립니다.

다음과 같이 db연결은 잘되어 있는데, ,회원가입을 누르면 이런 오류가 백에서 뜹니다.

그리고 브라우저 창 경고 메세지에서는 이러한 경고 메세지가 뜹니다.

개발자 도구 네트워크 창에는 이런 에러가 뜹니다.

 

 

 

코드는 어떤 부분에서 오류가 발생했는지 잘 모르겠어서 첨부하지 못했습니다. ㅠㅠ

어떤 부분에서 오류가 발생했는지 알려주시면 감사하겠습니다!!!

react nodejs redux express Next.js

답변 1

0

제로초(조현영)

서버로 email이 전달되지 않고 있는 겁니다. 네트워크탭에서 payload 탭에 email 있나 확인해보세요.

0

이원영

image페이로드에 이메일이 있는거 같습니다!!

어디가 문제일까요 ㅜㅜ

0

제로초(조현영)

그럼 서버에서 받는 부분이 문제입니다.

0

제로초(조현영)

유저 라우터 코드 올려보세요.

0

이원영

const express = require('express');
const bcrypt =require('bcrypt');
const passport = require('passport');

const { User, Post } = require('../models');
const { isLoggedIn, isNotLoggedIn } = require('./middlewares');

const router = express.Router();

router.post('/login',isNotLoggedIn, (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); //401은 허가되지 않음
    }
    return req.login(user, async (loginErr) => {
      if (loginErr) {
        console.error(loginErr);
        return next(loginErr);
      }
      //res.setHeader('Cookie', 'cslhy')
      const fullUserWithoutPassword = await User.findOne({ //fullUser는 모든정보들을 다 집어넣은 유저
        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);
}); //POST /user/login

router.post('/', isNotLoggedIn, async (req, res, next) => { // POST /user/
  try{
    const exUser = await User.findOne({
      where: { //조건
        email: req.body.eamil,
      }
    });
    if (exUser) {
      return res.status(403).send('이미 사용중인 아이디입니다.');
    }
    const hashedPassword = await bcrypt.hash(req.body.password, 12); //13은 보안 강도 -> 컴퓨터 성능에 따라
    await User.create({
      email: req.body.email,
      nickname: req.body.nickname,
      password: hashedPassword,
    });
    res.status(200).send('ok'); //200 생략가능 but 써라
  } catch(error) {
    console.error(error);
    next(error); // status 500
  }
});

//로그아웃 라우터 - 세션 지우기, 쿠키 지우기
router.post('/logout', isLoggedIn, (req, res) => {
  req.logout();
  req.session.destroy();
  res.send('ok');
});

module.exports = router;

 

routes/user.js 파일입니다!

0

제로초(조현영)

여기서 req.body.email이 undefined라는 뜻인데요. 이게 언디파인드려면 app.js가 잘못되었을 겁니다. 그것도 올려주세요.

0

이원영

const express = require('express');
const cors = require('cors');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const passport = require('passport');
const dotenv = require('dotenv');

const postRouter = require('./routes/post');
const userRouter = require('./routes/user');
const db = require('./models');
const passportConfig = require('./passport');

dotenv.config();
const app = express();
db.sequelize.sync()
  .then(() => {
    console.log('db 연결 성공');
  })
  .catch(console.error);
passportConfig();

app.use(cors({
  origin: '*',
  credentials: false,
})); //cors에러를 해결하기 위해서
app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(session({
  saveUninitialized: false,
  resave: false,
  secret: process.env.COOKIE_SECRET,
}));
app.use(passport.initialize());
app.use(passport.session());
 
app.get('/', (req, res) => {
  res.send('hello express');
});

app.get('/', (req, res) => {
  res.send('hello api');
});

app.get('/posts', (req, res) => {
  res.json([
    { id:1, content: 'hello'},
    { id:2, content: 'hello2'},
    { id:3, content: 'hello3'},
  ]);
});

app.use('/post', postRouter);
app.use('/user', userRouter);

app.listen(3065, () => {
  console.log('서버 실행 중');
});

아 네! app.js 파일입니다!

0

제로초(조현영)

아, 지금 보니 email: req.body.eamil 로 되어있네요 ㅎㅎㅎ 오타네요 제가 문제를 해결한 과정을 잘 기억하세요.

0

이원영

아 오타였네요..! 감사합니다! 다른 오류가 생겼을때도 에러 메세지 보면서 알려주신대로 문제 해결해보도록 노력하겠습니다!!

넥스트 버젼 질문

0

90

2

로그인시 401 Unauthorized 오류가 뜹니다

0

104

1

무한 스크롤 중 스크롤 튐 현상

0

198

1

특정 페이지 접근을 막고 싶을 때

0

117

2

createGlobalStyle의 위치와 영향범위

0

103

2

인라인 스타일 리렌더링 관련

0

98

2

vsc 에서 npm init 설치시 오류

0

159

2

nextjs 15버전 사용 가능할까요?

0

166

1

화면 새로고침 문의

0

129

1

RTK에서 draft, state 차이가 있나요?

0

164

2

Next 14 사용해도 될까요?

0

455

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

359

1

url 오류 질문있습니다

0

218

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

391

1

sudo certbot --nginx 에러

0

1295

2

Minified React error 콘솔에러 (hydrate)

0

481

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

257

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

341

1

npm run build 에러

0

526

1

front 서버 npm run build 중에 발생한 에러들

0

399

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

351

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

291

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

251

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

207

1