node.js로 server, router 모듈을 만들어 실행하던 중 위와 같은 오류를 만났다. 처음엔 TypeError로 구글링하다 pathname에 /favicon.ico가 찍혀있는 것을 발견하고 힌트를 얻었다. favicon은 웹 페이지를 방문할 때 웹 브라우저가 자동으로 요청하는 아이콘 파일이다.
하지만 requestHandler.js 파일에는 /favicon.ico 경로에 대한 처리 로직이나 핸들러 함수가 없어서 오류가 발생하는 것이다.
function favicon() {
console.log("favicon");
}
handle["/favicon.ico"] = favicon;
/favicon.ico 경로에 대한 핸들러 함수를 직접 정의
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 오류 코드로 응답