본문 바로가기

웹/Nodejs

[NodeJs] node v14 -> v18로 넘어왔는데 app.use()에서 에러가 납니다.

node v14 -> v18로 넘어왔는데 app.use()에서 에러가 납니다.

image

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의 버전이 업그래이드 되면서 함수의 매개변수도 변한거 같습니다.

 

 

👍 해결방법

image

use는 handler 매개변수를 원합니다. type은 RequestHandler를 원하네요.

import express, { RequestHandler } from 'express';
app.use(morgan('dev') as RequestHandler);

RequestHandler를 import 해줍니다.

 

 

그리고 해당 매소드를 RequestHandler라고 명시해줍시다.

image

morgan()의 리턴타입은 Handler입니다. 이것도 ReqeustHandler로 타입을 명시해줍시다.

이러면 에러가 사라지고 express가 잘 작동되었습니다.

728x90