event
이벤트를 직접 만들 수도 있다
앞전까지 on('data', 콜백), on('end', 콜백)을 썻고
저 data와 end 라는 이벤트가 발생할 시 콜백을 호출 하게
이벤트를 등록 한건데
![]() |
![]() |
![]() |
|
![]() |
|
![]() |
- on('이벤트명', 콜백) : 이벤트명과 이벤트 발생 시 콜백을 연결. 이런걸 이벤트 리스닝 이라함.
- addListener('이벤트명',콜백) : on과 기능이 같음.
- emit('이벤트명') : 이벤트 호출 메서드. 이벤트 명을 넣음으로 미리 등록한 콜백함수가 작동
- once('이벤트명', 콜백) : 이벤트가 한 번만 실행.
- removeAllListener('이벤트명') : 이벤트에 연결된 모든 이벤트 리스너 제거
- removeListener('이벤트명', 리스너) : 이벤트에 연결된 리스너를 하나씩 제거.
- off('이벤트명', 콜백) : removeListener와 기능적으로 같음.
- listenerCount('이벤트명') : 현재 연결된 리스너갯수 확인
직접 이벤트를 생성 할 수도 있고
다양한 동작을 직접 구현되 될거다
웹 서버 구축때 가장 많이 사용된다
그리고 수많은 에러를 직면하게 된다
error
그럼 에러를 처리 할줄 알아야 한다
바로 예외 처리다
멀티 스레드 프로그램은 스레드 하나 멈춰도 다른 스레드가 대신 해줄수 있지만
싱글 스레드는 하나가 멈추면 그냥 프로그램 전체가 뻑난다
아무리 신중하게 제작을 했어도 에러가 나는 상황은 생겨나기 마련이고
그런 에러상황을 예외 처리하여 로그로 남긴다던지 하고
프로그램이 멈추지 않고 돌아가게 해야 한다
![]() |
![]() |
에러 잡는건 try catch 문을 사용하는건 타 언어들에서도 공통인듯..
코드 이거 1초마다 도니깐 [ control ]+[ c ]눌러 나오자
![]() |
![]() |
존재치 않는걸 지우라 명령하니 에러가 뜬다
이때 뜬 에러는 로그에 기록해 두고 수정함된다
에러 떳을때 그걸 throw 하면 프로세스가 멈춰 버린다
이때 throw한 경우 꼭 try catch 로 에러를 잡아 줘야 한다
![]() |
![]() |
promise 에러는 cacth 안해도 알아서 처리가 된다
근데 이 프로미스 에러처리 동작은
노드 버전 따라 변할수도 있음
때문에 cacth 붙여 주는편이 좋음
그럼 예측이 불가한 에러같은경우 처리하는 법은. .
![]() |
![]() |
process 객체에 uncaughtException 이벤트 리스너를 달았음.
처리 못할 에러가 떳을 시 이벤트 리스너가 실행 되고 프로세스는 유지
만약 저거 없었으면 setTimeout()는 실행도 안될것
서버 운영은 에러와의 전쟁이라 봐야함
에러 뜨면 로그 남기고 보완해 나가야 함
자주 발생하는 에러
- node: command not found : 노드 환경변수가 제대로 설정되지 않았을때 나오는 에러
- ReferenceError : 모듈 require했는지 확인
- Error: Cant set headers after they are sent : 요청에 대한 응답을 보낼때 응답을 두번 이상 보냄.( 보내는거 루프도는지확인)
- Error: Cannot find module 모듈명 : 해당 모듈을 require 했으나 설치가 되있진 않음.
- FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory : 코드 실행시 메모리 부족으로 스트립트가 정상 실행이 안될경우. 코드가 잘못 됬으니 확인 해보기.
- UnhandledPromiseRejectionWarning: Unhandled promise rejection : 프로미스 사용시 catch 메서드 안붙여서 생기는 오류
- EADDRINUSE 포드 번호 : 해당 포트에 다른 프로세스가 연결되 사용중이니 바꾸란 소리.
netstat -ano | findstr 포드 | 윈도우에서 프로세스 종료하는 방법 |
taskkill /pid 프로세스아이디 /f |
- EACCES 또는 EPERM : 노드가 작업을 수행하는데 권한이 충분히 않을때
- EJSONPARSE : package.json 등 JSON 파일에 문법적 오류가 있음. 오타 확인
- ECONNREFUSED : 요청을 보냈으나 연결이 아되있으면 뜨는 오류. 주소가 맞는지 보면됨
- ETARGET : package.json에 등록한 페키지 버전이 존재하지 않을때 생김
- ETIMEOUT : 요청 보냈는데 응답이 안올때
- ENOENT : no such file or directory : 지정한 폴더나 파일이 존재 안할때