inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

내가 만든 파일 타입스크립트로 전환하기

마지막 수업 중 TypeScript로 전환하는 과정에서 LocalStrategy를 수정하던 중 발생한 오류입니다.

637

kangsg26

작성한 질문수 1

0

안녕하세요.

수업 너무 잘 듣고 있던 학생입니다. 다름이 아닌 수업에서는 수정하지 않았지만 다음과 같은 오류가 발생하였고, 오류내용은 다음과 같습니다.캡처_01.PNG-> 해당 코드는 controllers > auth.ts파일 중 login메서드의 구현부입니다.

$ npx tsc --noEmit
controller/auth.ts:27:37 - error TS7006: Parameter 'authError' implicitly has an 'any' type.

27     passport.authenticate('local', (authError, user, info) => {
                                       ~~~~~~~~~

controller/auth.ts:27:48 - error TS7006: Parameter 'user' implicitly has an 'any' type.

27     passport.authenticate('local', (authError, user, info) => {
                                                  ~~~~

controller/auth.ts:27:54 - error TS7006: Parameter 'info' implicitly has an 'any' type.

27     passport.authenticate('local', (authError, user, info) => {
                                                        ~~~~


Found 3 errors in the same file, starting at: controller/auth.ts:27

그래서 해당 파라미터를 any로 타입을 줘서 해결하였지만, any를 가급적 사용하고 싶지 않아 다른 방법을 찾고 있는데 괜찮은 방법이 있을까요?

 

시도했던 방법은 다음과 같습니다.

-> 하지만 message에서 다음과 같은 오류를 받음.

controller/auth.ts:33:55 - error TS2339: Property 'message' does not exist on type 'string | object | (string | undefined)[]'.
  Property 'message' does not exist on type 'string'.

33             return res.redirect(`/?loginError=${info?.message}`);

-> message as string으로 해결해보려 하였지만 같은 오류메세지를 반복.

node.js express typescript

답변 3

1

제로초(조현영)

다시 확인 결과 이 부분 @types/passport@1.0.12에서 타입이 조금 수정되었네요. 다음과 같이 하시면 됩니다.

passport.authenticate('local', (authError: any, user: Express.User, info: { message: string }) => {

 

0

앞구르기장인

추후 참고가 될까 싶어서 남깁니다. 동일 에러 발생했습니다. node_modules 삭제하고 package.json 내 @types/passport version을 github 프로젝트랑 동일하게 맞춘 다음("@types/passport": "^1.0.9") 터미널에 npm i 실행 및 VS Code 종료 후 재실행 하니까 해결됐습니다.

0

제로초(조현영)

어, 저게 사실 이전 강좌에서 해결이 되었어야 하거든요. @types/passport 설치하면 자동으로 해결됩니다.

0

kangsg26

AuthenticateCallback타입을 passport모듈에서 가져온 터라 @types/passport는 이미 설치한 상태입니다.

아니면 번거롭더라도 types폴더의 index.d.ts파일에 타입을 만들어서 처리하는 것이 괜찮을까요?

0

제로초(조현영)

아뇨. 다시 한 번 말씀드리지만... 저 문제는 애초에 발생해서는 안 됩니다.

제 깃헙에서 ch17/17.4/nodebird 한 번 클론받아서 실행해보세요. 뭔가가 다를겁니다.

0

kangsg26

네, 늦은 밤 답변 감사합니다.

찾아보겠습니다.

0

제로초(조현영)

5:38 보시면 여기서 login 컨트롤러 에러가 전부 사라지게 됩니다.

0

kangsg26

이게 @types/passport모듈의 버전의 문제인지, 아니면 PC를 재부팅해서 그런 것인지 아직 제대로 확인은 안해봤지만, 해결이 되었습니다.

감사합니다.

깃헙 질문

0

79

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

74

1

aws - lightsail 이용 관련

0

56

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

78

2

모듈 사용 시 단점이 있나요?

0

78

1

node.js 버전 및 typescript 적용 문의

0

91

2

12.7. 방장기능(강퇴) 질문드립니다.

0

78

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

67

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

73

2

12.7.1스스로 해보기 질문되나요

0

89

3

시퀄라이즈 실습하기 질문드립니다.

0

186

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

94

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

109

2

구매 결제관련 질문입니다 !

0

120

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

130

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

146

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

119

2

무료/프리미엄 동시 소유 시 질문

0

113

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

133

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

155

2

webstorm 해결할 수 없는 변수 문제

0

152

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

145

2

LightSail 실행 중 오류 질문드립니다!

0

198

2

RedisStore 사용법 질문

0

129

2