Thumbnail
BEST 개발 · 프로그래밍 백엔드
Node.js에 TypeScript 적용하기(feat. NodeBird)
(4.6)
12개의 수강평 ∙ 309명의 수강생

29,700원

지식공유자: 조현영
총 26개 수업 (5시간 16분)
수강기한: 무제한
수료증: 발급
난이도:  입문-초급-중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
조현영 프로필
serializeUser와 deserializeUser 에러나는 분들께
조현영 2021.02.16

passport 관련 타이핑이 또 업데이트 되었네요.

types/index.d.ts에 다음 코드를 추가하고

import IUser from '../models/user';

declare global {
    namespace Express {
        export interface User extends IUser {}
   }
}

passport/index.ts를 다음과 같이 바꾸세요.
 passport.serializeUser((userdone=> {
    done(nulluser.id);
 });
  passport.deserializeUser<number>(async (iddone=> {
    try {
      const user = await User.findOne({
        where: { id },
     });
      if (!user) {
        return done(new Error('no user'));
     }
      return done(nulluser); // req.user
    } catch (err) {
      console.error(err);
      return done(err);
   }
});

덤으로 req.user도 req.user!.toJSON() as User 할 필요 없게 되었습니다. 그냥 req.user 쓰시면 됩니다.

tsconfig.json에는 ts-node 부분 추가하셔야 합니다.
{
"ts-node": {
"files": true
},
"compilerOptions": {
"strict": true,
"lib": ["es2020"],
"esModuleInterop": true,
"moduleResolution": "node",
"typeRoots": ["./types"]
}
}
다른 댓글 보기(1)
조현영 프로필
타입스크립트@4.0, 익스프레스, 시퀄라이즈@6.0
조현영 2020.09.01

위 모듈들의 버전 업데이트로 강좌에서 동작하지 않는 부분을 해결하는 방법을 보너스 강좌(섹션4)에서 추가하였습니다.

추후 모듈이 업데이트되면 따라서 보너스 강좌에 계속 추가하도록 하겠습니다.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의를
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스