웹/Nodejs
[NodeJs] node v14 -> v18로 넘어왔는데 app.use()에서 에러가 납니다.
wonin
2022. 11. 21. 19:17
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