Node.js 생태계에서 Express 프레임워크는 가장 인기 있는 웹 애플리케이션 프레임워크입니다. 다양한 기능과 생태계의 지원 덕분에 많은 개발자들이 Express를 사용하여 웹 서버를 구축하고 있습니다. 하지만 서버개발에서 발생할 수 있는 버그는 항상 존재하며, 이를 효과적으로 찾아내고 수정하는 것이 중요합니다. 이번 강좌에서는 Node.js Inspector와 VSCode Debugger를 중심으로 Express 애플리케이션을 디버깅하는 방법에 대해 자세히 알아보겠습니다.
디버깅이란?
디버깅은 소프트웨어 개발 과정에서 프로그램의 코드, 알고리즘, 시스템 등에서 발생하는 오류나 문제를 찾아 수정하는 과정을 말합니다. 이는 개발자의 코드 품질을 높이고, 사용자에게 더 나은 경험을 제공하기 위해 필수적인 과정입니다.
Express에서의 디버깅 기법
Express 애플리케이션을 디버깅하는 방법에는 여러 가지가 있으며, 그 중에서도 Node.js Inspector와 VSCode Debugger가 가장 널리 사용됩니다. 각각의 도구를 이용할 때의 특징과 방법을 살펴보겠습니다.
Node.js Inspector
Node.js Inspector는 Chrome 개발자 도구를 사용하여 Node.js 애플리케이션을 디버깅할 수 있게 해주는 도구입니다. 사용하기 간편하고, 강력한 기능을 제공하여 많은 개발자에게 선호됩니다.
Node.js Inspector 사용하기
- 서버 실행하기: Node.js Inspector를 사용하기 위해서 애플리케이션을 아래와 같이 실행합니다.
- Chrome에서 개발자 도구 열기: Chrome 브라우저를 열고 주소창에
chrome://inspect
를 입력합니다. - 원격 디버깅 세션 추가:
Configure...
버튼을 클릭하고localhost:9229
를 추가합니다. - 디버깅 세션 시작: “Remote Target” 목록에서 디버깅하고자 하는 애플리케이션을 클릭합니다.
- 브레이크포인트 설정: 코드에서 문제가 발생할 가능성이 있는 부분에 브레이크포인트를 설정한 후, 애플리케이션을 실행합니다.
- 디버깅 진행: 코드가 브레이크포인트에서 멈추면, 변수 값을 확인하고 호출 스택을 탐색하면서 문제를 찾습니다.
node --inspect index.js
Node.js Inspector 예제
다음은 Node.js Inspector를 사용하여 간단한 Express 애플리케이션을 디버깅하는 예제입니다.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
let message = 'Hello, World!';
console.log(message);
res.send(message);
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
위의 코드를 실행한 후, Node.js Inspector를 설정하여 브레이크포인트를 console.log(message);
줄에 추가한 후 실행하면, 코드가 중단되고 변수 message
의 값을 확인할 수 있습니다.
VSCode Debugger
Visual Studio Code는 유용한 내장 디버거를 제공하여 Node.js 애플리케이션을 디버깅하는 데 매우 적합합니다. 사용자 친화적인 UI와 쉬운 설정 덕분에 많은 개발자들이 VSCode를 이용해 디버깅을 진행합니다.
VSCode Debugger 사용하기
- VSCode 열기: VSCode를 실행하고 프로젝트를 엽니다.
- 런 & 디버그 탭 선택: 왼쪽 사이드 바에서 런 & 디버그 아이콘을 클릭합니다.
- launch.json 설정하기:
create a launch.json file
를 클릭하여 아래 내용을 입력합니다. - 브레이크포인트 설정하기: 코드에서 원하는 위치에 클릭하여 브레이크포인트를 설정합니다.
- 디버깅 시작하기:
F5
키를 눌러 디버깅을 시작합니다.
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js"
}
]
}
VSCode Debugger 예제
아래의 코드는 Express 서버와 VSCode 디버거를 사용하는 예제입니다.
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
let data = { id: 1, name: 'John Doe' };
console.log('Fetching data:', data);
res.json(data);
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
위의 예제를 실행하고, console.log('Fetching data:', data);
줄에 브레이크포인트를 설정한 후 디버깅을 시작하면 호출 시 불러오는 데이터의 값을 추적할 수 있습니다.
디버깅을 더욱 효율적으로 하는 기법
디버깅 과정에서 효율성을 높이려면 다음과 같은 추가 기법들을 사용할 수 있습니다:
- 로그 기록 개선: 단순한
console.log
사용 대신 패키지(winston
,morgan
등)를 사용해 로그 레벨을 설정하고 파일에 저장하여 추후 분석이 가능하게 합니다. - 애플리케이션 상태 체크: 애플리케이션 상태를 정기적으로 확인할 수 있는 API를 만들고 닷컴에서 호출하여 진단할 수 있도록 합니다.
- 에러 핸들링: 미들웨어를 사용하여 예상치 못한 에러를 포착하고 사용자에게 적절한 응답을 반환합니다.
- 유닛 테스트 및 통합 테스트:
Mocha
,Jest
와 같은 도구를 활용하여 테스트 작성 및 자동화로 코드의 신뢰성을 높입니다.
결론
Express 애플리케이션의 디버깅은 소프트웨어 개발에서 중요한 역할을 하며, 적절한 도구 및 기법을 사용하여 문제를 신속하게 해결할 수 있습니다. Node.js Inspector와 VSCode Debugger는 이 과정에서 매우 유용한 도구입니다. 오류를 발견하고 수정하는 과정을 통해 더 나은 품질의 애플리케이션을 개발해 나가시길 바랍니다.
참고 자료
추가적인 자료를 원하신다면 아래 링크를 참고하시기 바랍니다.