이전 수업까지는 string만 담던 map
이번에는 object(객체)를 담아보려고 한다!
((위의 코드까지 객체부분임))
(의문점 : 왜 영상과 다르게 id값을 따로 지정해서 json으로 보내지 않아도 보내지는 것일까?)
실습하며 생겼던 오류와 해결
포트 번호가 1234인 서버를 쓰려고 코드에 작성하고 코드런을 했는데
출력 창에 다음과 같은 오류가 떴다
요약 : 포트 1234를 이미 사용하고 있어서 서버 구동이 안된다!
((근데 지금 1234를 사용하고 있는건 youtuber-demo.js 파일밖에 없는데,, 이게 무슨 일인가..))
일단 문제해결이 필요하다.
1234서버를 강제종료 시켜주기 위해,
1) cmd창 2) 작업관리자창을 켜준다.
윈도우 기준 cmd창에 netstat -ano를 쳐준다.
(-a = 모든 포트 표시, -n = ip port 형식으로 표시, -o = pid표시)
그러면
이런 창이 뜬다.
그리고 작업관리자 ((자세히)) 들어가서 node.exe라고 검색을 해준다
현재 실행중인 서버의 pid번호가 뜬다.
여기서 pid번호가 19888임을 알 수 있다.
cmd창에서 다시 보면 포트번호가 1234인 로컬 주소에서 pid번호가 19888로 같은 항목을 찾을 수 있다.
그러면 작업관리자에 가서 19888 pid번호를 가진 항목을 작업 끝내기로 강제종료 시켜준다.
서버 구동을 다시 해보면 오류가 뜨지 않는 것을 확인할 수 있다.
문제가 발생한 이유는?
서버를 돌리기 위해 오른쪽 위의 run code버튼(재생 버튼)을 누르면 그와 동시에 멈춤버튼도 뜨게 되는데,
일정 시간이 지나면 node가 알아서 꺼준다고 한다(정확한 내용은 아님 - 알아서 꺼준 후에는 정지 버튼이 없어지고 재생 버튼만 뜨게 됨 - 사실 알아서 꺼준다기보다 세션 만료와 더 비슷한 느낌일 것 같다)
알아서 꺼줄 때 제대로 꺼주는 경우도 있지만 비정상적으로 종료시키는 경우가 많아서
분명 종료는 됐는데 아직 포트가 사용중인 것으로 뜰 수 있다.
그래서 위처럼 사용 포트 강제종료를 해주면 정상적으로 작동한다.
이런 상황을 방지하려면 code run 후 적당한 시간 안에 멈춤 버튼을 눌러줘야 할 것 같다..
express를 더 깊게 사용하기 전에 express 좀 다시 알아보자
npm을 통해 express를 사용하긴 했지만
아무튼 이 친구도 본인의 페이지를 가지고 있다.
express도 일종의 프레임워크다.
(라이브러리 vs 프레임워크)
웹 프레임워크 = 내가 만들고 싶은 웹 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 할 수 있는 것
express의 사이트에서 시작하기 > hello world로 들어가서 나와 있는 예시 코드도 한 번 돌려보자
그리고 시작하기 > express 들어가서
npm install express-generator -g 명령어를 express-base파일의 터미널에 실행시켜보자
(-g는 전역으로 설치한다는 의미임 -> 맥의 경우 권한을 한 번 더 물어본다)
이후 express를 터미널에 치고 상태를 확인해본다. -> 파일에 bin, app.js 등의 폴더와 파일들이 생긴다.
(1)
app.js 파일을 불러오고(연결), 디버그 로그를 찍을 수 있게 한다. http프로토콜 사용한다.
(2)
http 불러올 때에는 createserver해줬는데 express쓸 때에는 안했다 -> 이미 www.js파일에서 해주고 있었다.
http외의 다른 모듈 => 미들 모듈이라고 우선 말할 수 있다