
1. 왜 JS가 멈춘 것처럼 보일까
JavaScript가 실행되지 않을 때 가장 답답한 점은 화면만 보면 원인이 전혀 보이지 않는다는 것입니다. 버튼도 보이고 입력창도 있는데, 클릭해도 변화가 없으니 코드 전체가 고장 난 느낌이 들죠. 하지만 대다수 문제는 특정 한 지점에서 스크립트가 끊긴 상태입니다. 즉, 전부 실패한 것이 아니라 한 줄의 에러가 이후 실행을 막는 구조인 경우가 흔합니다.
그래서 중요한 건 "무엇이 안 되나"보다 "어디서 실행이 멈추나"를 찾는 것입니다. 콘솔, 스크립트 로드, DOM 시점, 선택자, 캐시를 순서대로 확인하면 생각보다 빠르게 복구할 수 있습니다. 감으로 고치기보다 체크리스트 기반으로 접근하는 것이 시간을 아끼는 핵심입니다.
2. 가장 먼저 확인할 5가지
아래 다섯 가지는 실제로 오류 빈도가 높은 항목입니다. 이 순서대로 보면 원인 탐색 범위를 빠르게 줄일 수 있습니다.
| 우선 확인 | 의심 신호 | 즉시 조치 |
|---|---|---|
| Console 에러 | 붉은 에러 메시지, 파일/라인 번호 표시 | 첫 번째 에러부터 해결하고 새로고침 |
| 스크립트 경로 | 404, net::ERR, 파일명 오타 | script src 경로와 실제 파일 위치 대조 |
| 실행 시점 | null 참조, 요소 선택 실패 | DOMContentLoaded 또는 body 하단 script 사용 |
| 선택자 불일치 | id/class 이름이 HTML과 다름 | 복붙 후 변경 누락 여부 문자 단위 확인 |
| 브라우저 캐시 | 코드 고쳤는데 반영 안 됨 | 강력 새로고침(Ctrl+F5) 또는 캐시 비우기 |
3. 실제 점검 순서와 복구 방법
1) 콘솔을 먼저 열고 첫 에러만 본다
한 번에 여러 에러가 보여도 당황할 필요 없습니다. 대부분 첫 번째 에러가 연쇄적으로 뒤 에러를 만든 결과입니다. 따라서 첫 에러를 해결한 뒤 새로고침하면 나머지는 자동으로 사라지는 경우가 많습니다. 이 방식이 디버깅 시간을 크게 줄여줍니다.
2) "스크립트가 로드되었는지"를 분리해서 확인한다
코드 로직 이전에 파일이 브라우저에 도착했는지부터 확인하세요. 파일이 로드되지 않으면 어떤 함수도 실행되지 않습니다. 개발자도구 Network 탭에서 JS 파일 상태가 200인지 보고, 404면 파일명 대소문자, 폴더 경로, 확장자 누락을 점검합니다.
3) 이벤트 콜백 첫 줄에 로그를 넣는다
예를 들어 클릭 이벤트라면 콜백 첫 줄에 console.log('click ok')를 넣어 실행 진입 여부를 확인합니다. 로그가 찍히면 이벤트 연결은 정상이고, 이후 비즈니스 로직에서 멈춘 것입니다. 로그가 안 찍히면 선택자나 연결 시점 문제를 우선 해결해야 합니다.
4) 외부 라이브러리 의존 순서를 확인한다
jQuery나 차트 라이브러리처럼 의존성이 있는 경우 로드 순서가 바뀌면 "정의되지 않음" 에러가 발생합니다. 플러그인보다 코어 라이브러리를 먼저 불러오는지, 모듈 번들 환경이면 import 경로가 정확한지 확인하세요.
4. 재발 방지를 위한 개발 습관
작업 속도를 높이는 진짜 비결은 디버깅을 잘하는 습관입니다. 첫째, 기능을 붙일 때마다 "콘솔 에러 0개" 상태를 유지하세요. 둘째, 파일명 변경 시 경로까지 동시에 수정하는 체크리스트를 유지하세요. 셋째, 주요 이벤트 핸들러에는 임시 로그를 넣고 기능 확인 후 제거하는 루틴을 만드세요.
추가로 AI에게 코드 수정을 요청할 때는 "안 돼요" 한 줄보다, 에러 원문과 관련 코드 20~40줄을 함께 전달하는 편이 정확도가 훨씬 높습니다. 결국 문제 해결 속도는 정보 품질에 비례합니다. 증상, 콘솔 메시지, 재현 절차를 묶어 전달하면 해결이 빨라집니다.
5. 자주 묻는 질문
Q1. 에러가 없는데도 코드가 안 돌아가요. 왜 그럴까요?
A. 조건문 분기 때문에 실행 경로가 다른 곳으로 빠졌을 수 있습니다. 주요 분기 앞뒤에 로그를 넣어 어느 단계까지 실행되는지 추적해 보세요.
Q2. defer와 DOMContentLoaded를 같이 써도 되나요?
A. 가능하지만 중복 제어가 될 수 있습니다. 프로젝트 규칙을 하나로 정해 일관되게 쓰는 것이 유지보수에 유리합니다.
Q3. 초보자가 가장 자주 놓치는 포인트는 무엇인가요?
A. 파일 경로 오타와 선택자 불일치입니다. 특히 id 철자 하나만 달라도 이벤트가 붙지 않으니 HTML과 JS를 나란히 두고 확인하는 습관이 중요합니다.
'바이브코딩 오류 해결 노트' 카테고리의 다른 글
| 체크박스를 눌렀는데 완료 상태가 바뀌지 않을 때 (0) | 2026.05.16 |
|---|---|
| localStorage에 저장했는데 새로고침하면 사라질 때 (0) | 2026.05.15 |
| CSS를 작성했는데 화면에 적용되지 않을 때 확인 순서 (0) | 2026.05.14 |
| Cannot read properties of null 에러 쉽게 해결하기 (0) | 2026.05.13 |
| 버튼을 눌러도 아무 일도 안 일어날 때 확인할 것 (0) | 2026.05.11 |