You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* 혜림님 리뷰 반영
* 주연님 리뷰 반영
- config.mts 파일에서 "기여하기" 텍스트를 "기여하기 탬플릿"으로 변경
- event.md 파일의 참여 이벤트 기간을 수정하고, 상품 수령 안내 날짜를 변경
- introduce.md 파일의 내용 수정 및 문단 정리
- start.md 파일에서 불필요한 설명 삭제
- diagnose 관련 페이지에서 오류 메시지 및 예시 제목 수정
- prevent 페이지에서 사용자 상태 및 배포 상태 섹션 제목 변경
- reproduce 페이지에서 예시 제목 수정 및 내용 정리
* 이벤트 페이지에 디버깅 티셔츠 이미지 추가 및 참여 방법과 기간에 대한 내용을 수정
* [autofix.ci] apply automated fixes
---------
Co-authored-by: lee-ji-soo-v2 <lee-ji-soo-v2@naver.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: fundamentals/debug/pages/diagnose/error-message.md
+14-13Lines changed: 14 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,15 +4,15 @@
4
4
5
5
빨간 줄의 거대한 양의 에러 메세지를 보면 우리는 순간 당황해서 에러 메시지를 통째로 복사해 검색창에 붙여넣곤 해요. 하지만 에러 메시지는 의외로 친절하게 오류 원인을 알려 주고 있어요. 한 단어씩·한 문장씩 차근차근 해석하면 문제 발생 지점을 짐작할 수 있는 중요한 단서를 얻을 수 있어요.
6
6
7
-
에러메세지는 문제의 범위를 빠르게 좁힐 수 있는 가장 강력한 힌트예요. 에러를 진단할 때는 단순히 메시지를 보는 것에 그치지 않고, 해당 메시지가 **무엇을 의미하는지**, **어떤 맥락에서 발생했는지**, **어떤 가능성부터 확인하면 좋은지** 차근히 살펴보는 게 중요해요.
7
+
에러 메세지는 문제의 범위를 빠르게 좁힐 수 있는 가장 강력한 힌트예요. 에러를 진단할 때는 단순히 메시지를 보는 것에 그치지 않고, 해당 메시지가 **무엇을 의미하는지**, **어떤 맥락에서 발생했는지**, **어떤 가능성부터 확인하면 좋은지** 차근히 살펴보는 게 중요해요. 이 페이지에서는 각 에러 메시지 종류에 대한 이해를 높일 수 있는 설명과, 무엇을 확인해야 하는지 알려드려요.
8
8
9
-
## 문법 오류 (`SyntaxError`)
9
+
## 문법 오류일 때 (`SyntaxError`)
10
10
11
11

12
12
13
13
코드에 문법적인 문제가 있을 때는 보통 `"SyntaxError: ~"`로 시작하는 에러 메시지가 출력돼요. 이 메시지는 자바스크립트 엔진이 **코드를 실행하기도 전에 문법을 해석하다가 실패했음을 알려주는 신호**예요.
14
14
15
-
`unexpected '}'`는 에러메세지에서 볼 수 있듯이 `}` 괄호에 문제가 있다는 뜻이에요. 괄호가 닫히지 않았거나, 불필요한 괄호가 추가되었을때, 혹은 `export`나 `return` 같은 예약어를 잘못 썼을 때 아래와 같은 메시지를 볼 수 있어요.
15
+
`unexpected '}'`는 `}` 괄호에 문제가 있다는 뜻이에요. 괄호가 닫히지 않았거나, 불필요한 괄호가 추가되었을때, 혹은 `export`나 `return` 같은 예약어를 잘못 썼을 때 아래와 같은 메시지를 볼 수 있어요.
16
16
17
17
```tsx 6
18
18
function run() {
@@ -27,7 +27,7 @@ function run() {
27
27
28
28

29
29
30
-
`Unexpected '<'` 에러 메세지는 보통 잘못된 URL로 인해 HTML 응답을 JSON으로 파싱하려는 시도에서 발생해요. 에러 메세지에서 'html...is not valid JSON' 이라는 문구에서 JSON.parse의 인자로 잘못된 타입의 데이터가 들어갔음을 추측해볼 수 있어요.
30
+
`Unexpected '<'` 에러 메세지는 보통 잘못된 URL로 인해 HTML 응답을 JSON으로 파싱하려는 시도에서 발생해요. 에러 메세지의 'html...is not valid JSON' 이라는 문구에서 `JSON.parse`의 인자로 잘못된 타입의 데이터가 들어갔음을 추측해볼 수 있어요.
- 사용자가 코드를 작성하는 동안 IDE가 구문 오류를 실시간으로 감지하고 강조 표시하여 판단해주기 때문에, 문법오류는 코드 작성 시 문제를 파악하고 고칠 수 있어요.
49
+
- 사용자가 코드를 작성하는 동안 IDE가 구문 오류를 실시간으로 감지해 강조 표시를 해줘요. 그래서 코드를 작성하면서 문법 오류를 바로 파악하고 고칠 수 있어요.
50
50
51
-
## 타입 오류 (`TypeError`)
51
+
## 타입 오류일 때 (`TypeError`)
52
52
53
53

54
54
55
-
값의 타입이 예상과 다를 때는 `"TypeError: ~"`로 시작하는 에러 메시지가 출력돼요. 이 에러는 주로 **정의되지 않았거나 잘못된 값에 접근하거나, 함수가 아닌 값을 함수처럼 호출했을 때** 발생해요.
55
+
값의 타입이 예상과 다를 때는 `"TypeError: ~"`로 시작하는 에러 메시지가 출력돼요. 이 에러는 주로 **정의되지 않았거나, 잘못된 값에 접근하거나, 함수가 아닌 값을 함수처럼 호출했을 때** 발생해요.
56
56
57
57
예를 들어 객체가 `null`이나 `undefined`인 상태에서 속성에 접근하려고 하면 이런 메시지를 볼 수 있어요.
58
58
@@ -65,7 +65,7 @@ console.log(user.name);
65
65
66
66

67
67
68
-
함수가 아닌 객체를 호출하면 다음과 같은 에러 메세지가 나요
68
+
함수가 아닌 객체를 호출하면 다음과 같은 에러 메세지가 나요.
69
69
70
70
```tsx2
71
71
constnum=42;
@@ -102,7 +102,7 @@ main();
102
102
- `typeof`, `Array.isArray()` 등으로 미리 검사했는지 확인해요
103
103
- `await` 누락 여부를 확인해요.
104
104
105
-
## 참조 오류 (`ReferenceError`)
105
+
## 참조 오류일 때 (`ReferenceError`)
106
106
107
107

108
108
@@ -121,7 +121,7 @@ let userName = "Alice";
121
121
- 선언보다 먼저 접근한 건 아닌지 확인해요
122
122
- 외부 스코프 참조가 의도한 것인지 확인해요
123
123
124
-
## 리소스 로딩 오류
124
+
## 리소스 로딩 오류일 때
125
125
126
126

127
127
@@ -157,13 +157,14 @@ fetch("/api/data")
157
157
158
158
- 콘솔에 `TypeError: Loadfailed`나 `Failedtofetch`가 보이면 네트워크, CORS, 인증서, CSP(Content Security Policy), 확장 프로그램 차단 가능성을 먼저 의심해요.
159
159
160
-
## 모듈 import 오류
160
+
## 모듈 import 오류일 때
161
161
162
162

163
163
164
-
모듈을 import하는 과정에서도 문법 오류(`SyntaxError`)가 발생할 수 있어요. 특히 ES 모듈(ESM)과 CommonJS(CJS) 방식이 혼합된 환경에서는 설정이 어긋나기 쉽고, 이로 인해 문법 오류처럼 보이는 에러가 나타날 수 있어요. 모듈 관련 에러 메시지를 보면 단순 문법 문제가 아니라 **모듈 시스템 설정에 문제가 있을 가능성**을 유추할 수 있어요.
164
+
모듈을 import 하는 과정에서도 문법 오류(`SyntaxError`)가 발생할 수 있어요. 특히 ES 모듈(ESM)과 CommonJS(CJS) 방식이 혼합된 환경에서는 설정이 서로 충돌해서 문법 오류처럼 보이는 에러가 나타날 수 있어요.
165
+
이때 모듈 관련 에러 메시지를 보면 단순 문법 문제가 아니라 **모듈 시스템 설정에 문제가 있을 가능성**을 유추할 수 있어요.
165
166
166
-
예를들어, .js 파일에 import 구문을 사용하게 되면 아래와 같은 에러머세지가 나타나요. Node.js는 기본적으로 .js 파일을 CommonJS로 해석하기 때문에, import를 사용할 수 없고 require()를 써야 해요.
167
+
예를 들어, .js 파일에 import 구문을 사용하게 되면 아래와 같은 에러 메시지가 나타나요. Node.js는 기본적으로 .js 파일을 CommonJS로 해석하기 때문에, `import`를 사용할 수 없고 `require()`를 써야 해요.
Copy file name to clipboardExpand all lines: fundamentals/debug/pages/introduce.md
+9-19Lines changed: 9 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,27 +2,17 @@
2
2
comments: false
3
3
---
4
4
5
-
# 끝없는 버그는 없다
5
+
# 시작하기
6
6
7
-
디버깅은 때로는 끝이 보이지 않는 긴 터널을 걷는 것처럼 외롭고 지치게 느껴질 수 있어요. 하지만 여러분이 마주하는 어려움은 결코 혼자 겪는 것이 아니에요. 수많은 개발자들이 같은 벽에 부딪히고, 같은 좌절을 겪으면서도 결국 해결책을 찾아왔어요.
7
+
디버깅(Debugging)은 프로그램이 예상대로 동작하지 않을 때, 그 원인을 찾아내고 해결하는 과정이에요. 개발 과정 전반에 걸쳐 반복되는, 누구에게나 피할 수 없는 중요한 작업이죠.
8
8
9
-
소프트웨어 문제에 풀 수 없는 문제는 없어요. 지금 당장은 답이 보이지 않아도, 한 걸음씩 차근차근 시도하다 보면 반드시 길이 열려요. 중요한 건 포기하지 않는 마음이에요. 문제와 마주하는 과정에서 여러분의 실력은 더 단단해지고, 개발자로서의 자신감은 한층 더 깊어질 거에요.
9
+
때로는 디버깅이 끝이 보이지 않는 긴 터널을 걷는 것처럼 느껴지기도 해요. 하지만 디버깅이 어렵다는 것은 결코 혼자 겪는 것이 아니에요. 수많은 개발자들이 같은 벽에 부딪히고, 같은 좌절을 겪으면서도 결국 해결책을 찾아왔어요. 풀 수 없는 버그는 없어요. 작은 단서를 따라가다 보면 반드시 해결책은 나타나요. 중요한 건 포기하지 않는 마음이에요.
10
10
11
-
<br/>
11
+
이 문서는 포기하지 않고 디버깅을 해나가는 분들에게 도움을 드리기 위해 흔히 만나는 버그 패턴과 디버깅 접근법을 실제 사례와 함께 소개해요. 지치기보다 단단해지는 경험으로, 디버깅을 바라볼 수 있도록 도와줄 거예요.
Copy file name to clipboardExpand all lines: fundamentals/debug/pages/prevent/index.md
+4-5Lines changed: 4 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,8 @@
2
2
3
3

4
4
5
-
"이제 이 버그가 다시는 재발하지 않도록 팀에 잘 정리해서 공유해야겠다."라는 생각이 드는 마음 한편으로는 "버그를 고쳤으니 끝났어, 잘했어, 바쁘니까 다른 일을 하러가자"라는 양가감정이 생겨요. 하지만, 바로 그 갈림길에서 어떤 선택을 하느냐가 개발자의 성장을 결정짓는 것 같아요. 단순히 버그를 고치는 것에서 멈추면 같은 문제가 반복될 수 있고, 결국 팀의 효율성과 신뢰에도 영향을 주죠. 반대로, 원인을 기록하고 해결 과정을 체계화해두면 나 자신도 한층 단단해지고, 팀 전체가 더 나은 방향으로 나아갈 수 있어요.
5
+
"이제 이 버그가 다시는 재발하지 않도록 팀에 잘 정리해서 공유해야겠다."라는 생각이 드는 마음 한편으로는 "버그를 고쳤으니 끝났어, 잘했어, 바쁘니까 다른 일을 하러가자"라는 마음도 들어요. 하지만 '버그 수정'은 끝이 아니라 더 나은 시스템과 더 강한 팀을 만드는 출발점이에요.
6
+
만약 단순히 버그를 고치는 것에서 멈추면 같은 문제가 반복될 수 있고, 결국 팀의 효율성과 신뢰에도 영향을 줘요. 반대로, 원인을 기록하고 해결 과정을 체계화해 두면 나 자신도 한층 단단해지고, 팀 전체가 더 나은 방향으로 나아갈 수 있어요.
6
7
7
-
즉, "버그 수정"은 끝이 아니라, 더 나은 시스템과 더 강한 팀을 만드는 출발점이에요.
8
-
그래서 당장의 바쁨보다 장기적인 성장을 택하는 게 중요해요.
9
-
10
-
다시는 같은 실수를 반복하지 않도록 기록을 남기고, 시스템을 개선하고, 팀과 지식을 나누는 일이 중요해요. 이 단계에서는 ”이 버그가 다시 생기지 않게 어떤 조치를 했는가?”를 중심으로 정리해요.
8
+
그래서 당장의 바쁨보다 장기적인 성장을 택하는 게 중요해요. 이를 위해 다시는 같은 실수를 반복하지 않도록 기록을 남기고, 시스템을 개선하고, 팀과 지식을 공유해야 해요.
0 commit comments