프론트 엔드 개발을 하다 보면 개인적으로는 사실 상 console.log를 사용 하여 해결하다 보니, 개별적으로 brackpoint를 걸어서 확인을 할 일이 잘 없었다.
(아직까지 작업한 기능이 그렇게 복잡하지 않아서 그럴수도..?)
진행중인 프로젝트에서는 electron + react를 쓰게 되면서, electron (main) 부분에 대한 디버깅이 가끔 필요했다.
이 역시 터미널에 콘솔이 찍히긴 했으나, 콘솔로 확인 불가능한 부분이 생겨서, 디버깅을 위해 설정한 부분을 공유한다.
해당 방식은 지극히 프로젝트의 설정에 따라 달라질 수 있다.
베이스 구성은 아래와 같다.
vscode 사용자만 해당한다.
프로젝트 디렉토리 폴더를 보면 다음과 같은 폴더가 있다.
.vscode
하위에 launch.json 파일을 새로 추가한다.
{
"version": "0.2.0",
"configurations": [
{
"name": "Electron: Main",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "yarn", // script에서 사용하는 시작 명령어
"runtimeArgs": [
"start-main-debug" // yarn start 로 치면 start에 해당(정의한 스크립트 명령어)
],
"env": {
"PORT": "3000" // 사용하는 port , ex)localhost:3000 의 3000
},
}, // main 프로세스 설정
{
"name": "Electron: Renderer",
"type": "chrome",
"request": "attach",
"port": 9223, // 브라우저에서 디버깅을 위한 port라고 한다.
"webRoot": "${workspaceFolder}",
"timeout": 100000 // 100000 or 1000000 해당 부분은 조정이 가능함
} // Renderer 프로세스 설정
],
"compounds": [
{
"name": "Electron: All",
"configurations": [
"Electron: Renderer",
"Electron: Main"
]
}
]
}
launch.json 내부에 script 관련 내용이 들어가 있기 때문에 위의 내용은 본인 프로젝트의 package.json 의 script 부분을 확인해야 한다.
위의 luncher.json 의 "start-main-debug" 의 내용이 package.json안에 이런식으로 있어야 한다. (이름은 상관없음)
{
"scripts": {
...
"start-main-debug": "concurrently \"cross-env BROWSER=none yarn react-start\" \"wait-on http://localhost:3000 && electron . --inspect=5858 --remote-debugging-port=9223\""
...
},
}
--inspect=5858
이후 F5나 디버깅 탭에서 디버거를 런 해보면 브레이크 포인트 작동과 값을 확인하면서 코드를 진행 시킬 수 있다.
사실 처음에 프로젝트마다 설정이 너무 달라서, 쉽지 않다고 생각했는데, 역시나 쉽지 않았다.
필요하신 분이 잘 설정해서 사용했으면 좋겠습니다. 관련하여 더 좋은 설정이나 아시는 부분이 있다면 댓글 감사하겠습니다.
https://alger.hashnode.dev/electron-react-debug-in-visual-studio-code
https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/2757