WILT-191024

1 분 소요

오늘 한 일

  1. 인프런 node.js 강의 수강
    • 10_SNS 서비스 만들기: passport세팅 ~ 카카오 로그인까지 봄
  2. node.js 코드 추가: passport 사용해서 회원가입, 로그인
    • routes/login, register -> routes/auth: /login, /register, /logout 구현
    • lib/passport.js -> passport/index, localStrategy, kakaoStrategy 구분, kakao 제외하고 구현됨
    • routes/middlewares: isLoggedIn, isNotLoggedIn 구현
    • bcrypt 모듈 이용해 비밀번호 저장 및 로그인 해시화
    • passport로 회원가입, 로그인 성공
    • ERROR res.redirect('/'); 등 redirect할 경우 여전히 302 redirect뜨면서 안됨. 아마 웹에서는 회원가입, 로그인, 홈 등 get 요청 들어오면 res.render();하는걸로 화면이 만들어져 있는데 나는 없어서 그런건가 싶긴 하다. 안드로이드 프로젝트 찾아봐야 할듯
    • async~await가 코드 상에 종종 나왔는데 무슨 의미였는지 까먹음..내일 볼 것
    • 기타 해결한 에러
    1. TypeError: Cannot read property 'serializeUser' of undefined: 정확히 기억은 안나지만 아마 app.js에서 passportConfig()->passportConfig(passport) 괄호 안에 passport 넣은 후로 사라진 듯?
    2. Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client: 이미 response가 클라이언트로 전송되고 나서 header를 set하려고 해서 일어난 에러니까 아마 res.redirect()등 response를 끝내버리는 코드 뒤에 뭔가 또 붙였나보다. redirect문제 해결 안 되서 redirect 없애버리니 자연스레 사라진듯ㅜ
    3. OverwriteModelError: Cannot overwrite 'users' model once compiled.: 오늘 가장 고생한 에러. 아마 아무 생각없이 모델 파일 명을 바꾸고 실행한 후로 발생했던 것 같다. 검색해보니 이미 같은 이름(users)로 모델이 만들어져 있는데 user.js파일 마지막 export할 때 mongoose.model('users',userSchema)로 또 생성하려고 해서 그런 듯. 모델 지우기도 찾아보고 DB collection도 drop해봤지만 해결되지 않았음.
       // Model/User.js
       module.exports = mongoose.model('users', userSchema); // 에러 발생 코드
       module.exports = mongoose.models.users || mongoose.model('users', userSchema);
       // mongoose.models.모델명 : 모델명을 key로 모델 객체 반환. 즉 이름이 'users'인 모델 있으면 그거 사용하고 없으면 새로 만들어서 반환
      
  3. 블록체인 강의 듣고 정리

댓글남기기