개발을 뚝딱뚝딱/매일매일 개발일지

18.01.08 개발일지

공돌이J 2018. 1. 8. 23:23

1. Chrome 브라우저는 http 요청할 때 2번 요청한다.


브라우저에서 Node.js 서버로 Get 요청을 날릴 때 마다 Connection 이벤트가 2번 씩 발생해서 요청 받은 경로를 콘솔로 찍어 확인해보니 원래 내가 요청했던 경로와, favicon.ico로 두번 요청이 들어오는 것을 확인했다.


, 브라우저에서는 서버에 요청을 날릴 때 사용자가 지정한 경로+favicon.ico 경로 요청을 더해 총 2번 요청하는 것이다.


*  favicon.icofavorite + icon의 합성어로, 브라우저 url 왼쪽에 표시되는 아이콘을 의미한다. 일반적으로 웹사이트 주소/favicon.ico에 요청을 날려 아이콘을 가져온다.



2. Node.js의 process 모듈 내에 존재하던 EventEmitter() 생성자는 더 이상 지원되지 않는다.


Node.js를 공부하기 위한 교재로 모던 웹을 위한 Node.js 프로그래밍을 통해 공부하고 있는데, 책은 v4, 6 버전을 기준으로 집필되었다 보니 현재 LTS 버전인 v.8에서 호환되지 않는 부분이 존재한다.


103페이지 5.5 이벤트 생성 부분에서 예시코드로 주어진 코드 5-13을 살펴보자


var custom = new process.EventEmitter();


위와 같이 코드를 작성하고 실행시키면

TypeError: process.EventEmitter is not a constructor

즉, EventEmitter()라는 생성자가 deprecated 되어 오류를 발생시킨다.


따라서 위의 코드 대신


var events = require(‘events’);

var custom = new events();


로 작성하면 정상적으로 작동된다.


3. JSON.stringify(jsonObject)

JSON 형태의 객체를 스트링으로 변환시켜 준다.


ex) 

var jsonObj = {'name':'j', 'job':'engineer'};//JSON 객체 생성


console.log(jsonObj); //-> TypeError: Cannot convert object to primitive value 발생(객체를 출력하려고 해서 발생한 오류)


console.log(JSON.stringify(jsonObj))// -> 콘솔에 {'name':'j', 'job':'engineer'} 정상적으로 출력된다.(json 객체가 스트링으로 변환되었기 때문)