Javascript 문법 에러를 제외한 오류의 종류를 살펴보도록 하겠습니다.
- node: command not found
- 노드를 설치했음에도 이 에러가 발생하는 경우는 환경 변수 설정의 오류가 발생하는 경우가 대부분입니다. 환경 변수에 노드가 설치된 경로가 포함되어야 합니다. - ReferenceError: 모듈 is not defined
- 모듈을 require했는지 확인이 필요합니다. - Error: Connot find module 모듈이름
- 모듈을 require했지만 설치는 안 한 상태입니다. npm i 명령어를 실행해야 합니다. - Error [ERR_MODULE_NOT_FOUND]
- 존재하지 않는 모듈을 불러올 때 발생합니다. - Error: Can't set headers after they are sent
- 요청에 대한 응답을 보낼 때, 응답을 두 번 이상 보냈다는 의미입니다. 요청에 대한 응답은 원칙적으로 한 번만 보내야 하므로 res관련 메서드가 중복 사용되었는지 확인합니다. - FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
- 코드 실행 시 메모리가 부족한 경우입니다. 일차적으로 코드 리뷰를 통해 오류가 있는지를 확인합니다. 만일 정상이고 메모리가 부족한 케이스라면, 노드의 메모리를 증가시킬 수 있습니다. node --max-old-space-size=4096 파일명과 같은 명령어를 사용합니다. (4096은 4GB) - UnhandledPromiseRejectionWarning: Unhandled promise rejection
- 프로미스 사용 시 catch를 붙이지 않으면 발생합니다. - EADDRINUSE 포트 번호
- 해당 포트에 이미 다른 프로세스가 연결된 상태입니다(노드일 수도 있고, 아닐 수도 있습니다). 프로세스를 종료하거나 다른 포트 넘버를 사용해야 합니다.
// 윈도우
$netstat -ano | findstr 포트
$taskkill /pid 프로세스아이디 /f
/* 포트가 300이고 netstat -ano | findstr 3000을 수행한 결과의
프로세스 아이디가 12345였을 경우 taskkill /pid 12345 /f를 수행하면 해당 프로세스가 종료 */
// 맥, 리눅스
$lsof -i tcp:포ㅓ트
$kill -9 프로세스아이디
/* 포트가 3000이고 lsof -i tcp:3000을 수행한 결과의 프로세스 아이디가 12345였을 경우
kill -9 12345를 실행하면 프로세스가 종료 */
- EACCES 또는 EPERM
- 노드 작업에 대한 권한이 충분치 않을 경우입니다. 파일이나 폴더 수정, 삭제, 생성, 권한을 확인해보아야 합니다. 맥이나 리눅스일 경우 명령어 앞에 sudo를 붙입니다. - EJSONPARSE
- package.json 등의 JSON 파일에 문법 오류가 있을 경우에 발생합니다. - ECONNREFUSED
- 요청을 보냈으나 연결이 성립하지 않을 때 발생합니다. 요청을 받는 서버 주소, 혹은 서버가 꺼졌는지 확인합니다. - ETARGET
- package.json에 기록한 패키지 버전이 존재하지 않을 때 발생합니다. 해당 버전이 존재하는지 확인하세요. - ETIMEOUT
- 요청을 보냈으나 응답이 시간 내에 오지 않을 때 발생합니다. 요청을 받는 서버의 상태를 점검해야 합니다. - ENOENT: no such file or directory
- 지정한 폴더나 파일이 존재하지 않는 경우입니다. 맥이나 리눅스에서는 대소문자도 구분해야 합니다.
'Programming > Node.js' 카테고리의 다른 글
5. http 모듈로 서버 만들기 (1) - 요청과 응답 [2] (0) | 2024.06.28 |
---|---|
5. http 모듈로 서버 만들기 (1) - 요청과 응답 [1] (0) | 2024.06.26 |
4. Node 기능 살펴보기 (11) - 예외 처리하기 [2] (0) | 2024.06.24 |
4. Node 기능 살펴보기 (11) - 예외 처리하기 [1] (0) | 2024.06.20 |
4. Node 기능 살펴보기 (10) - 이벤트 이해하기 [2/2] (0) | 2024.06.18 |