node v14 -> v18로 넘어왔는데 app.use()에서 에러가 납니다.
No overload matches this call. The last overload gave the following error. Argument of type 'Handler<Request<ParamsDictionary, any, any, ParsedQs>, ServerResponse<IncomingMessage>>' is not assignable to parameter of type 'PathParams'. Type 'Handler<Request<ParamsDictionary, any, any, ParsedQs>, ServerResponse<IncomingMessage>>' is not assignable to type '(string | RegExp)[]'.
typescript에서 함수 overloading이 맞지 않아서 생기는 오류같습니다. node의 버전이 업그래이드 되면서 함수의 매개변수도 변한거 같습니다.
👍 해결방법
use는 handler 매개변수를 원합니다. type은 RequestHandler를 원하네요.
import express, { RequestHandler } from 'express';
app.use(morgan('dev') as RequestHandler);
RequestHandler를 import 해줍니다.
그리고 해당 매소드를 RequestHandler라고 명시해줍시다.
morgan()의 리턴타입은 Handler입니다. 이것도 ReqeustHandler로 타입을 명시해줍시다.
이러면 에러가 사라지고 express가 잘 작동되었습니다.
728x90
'웹 > Nodejs' 카테고리의 다른 글
✅ [NodeJs] Sequelize에서 서브쿼리를 써야할 때! (0) | 2022.11.23 |
---|---|
[NodeJs] package.json에서 @types가 붙는 이유는? (0) | 2022.11.22 |
[Nodejs] pnpm에서 tsc-watch 사용하기 (0) | 2022.11.19 |
[NodeJs] nvm 윈도우 설치 중 C:\Users\������\AppData\Roaming\nvm, The system cannot find the path specified. 문제 해결 (0) | 2022.11.11 |
Sequelize select문 조건 알아보기 (0) | 2022.11.01 |