[Node.js] TypeError: handle[pathname] is not a function 오류

devlog·2024년 3월 8일
0

🚨 TypeError: handle[pathname] is not a function.

node.js로 server, router 모듈을 만들어 실행하던 중 위와 같은 오류를 만났다. 처음엔 TypeError로 구글링하다 pathname에 /favicon.ico가 찍혀있는 것을 발견하고 힌트를 얻었다. favicon은 웹 페이지를 방문할 때 웹 브라우저가 자동으로 요청하는 아이콘 파일이다.
하지만 requestHandler.js 파일에는 /favicon.ico 경로에 대한 처리 로직이나 핸들러 함수가 없어서 오류가 발생하는 것이다.

⚒️ 해결 방법

방법 1. requestHandler.js에 favicon 함수 추가

function favicon() {
 console.log("favicon");
}

handle["/favicon.ico"] = favicon;

/favicon.ico 경로에 대한 핸들러 함수를 직접 정의

방법 2. router.js 수정

function route(pathname, handle,response){
 console.log('pathname: ' + pathname);

 if(typeof handle[pathname] === 'function'){
   handle[pathname](response);
 }else{
   response.writeHead(404,{'Content_Type':'text/html'})
   response.write('Not Found.');
   response.end();
 }
 
}

exports.route = route;

요청된 경로에 해당하는 핸들러 함수가 함수로 정의되어 있다면 해당 함수를 호출하고, 그렇지 않으면 404 오류 코드로 응답

0개의 댓글