중단 점이 작동하도록 Angular 및 VSCode를 구성하려면 어떻게해야합니까?
답변
Angular 5 / CLI 1.5.5로 테스트 됨
- Chrome 디버거 확장 설치
launch.json
(.vscode 폴더 내부) 만들기- 내 사용
launch.json
(아래 참조) tasks.json
(.vscode 폴더 내부) 만들기- 내 사용
tasks.json
(아래 참조) - CTRL+ SHIFT+ 누르기B
- 프레스 F5
launch.json for angular/cli >= 1.3
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200/#",
"webRoot": "${workspaceFolder}"
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200/#",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Chrome (Test)",
"type": "chrome",
"request": "launch",
"url": "http://localhost:9876/debug.html",
"webRoot": "${workspaceFolder}"
},
{
"name": "Launch Chrome (E2E)",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/protractor/bin/protractor",
"protocol": "inspector",
"args": ["${workspaceFolder}/protractor.conf.js"]
}
]
}
tasks.json for angular/cli >= 1.3
{
"version": "2.0.0",
"tasks": [
{
"identifier": "ng serve",
"type": "npm",
"script": "start",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"identifier": "ng test",
"type": "npm",
"script": "test",
"problemMatcher": [],
"group": {
"kind": "test",
"isDefault": true
}
}
]
}
Angular 2.4.8로 테스트
- Chrome 디버거 확장 설치
- 만들기
launch.json
- 내 사용
launch.json
(아래 참조) - NG Live 개발 서버 시작 (
ng serve
) - 프레스 F5
launch.json for angular/cli >= 1.0.0-beta.32
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"sourceMaps": true,
"userDataDir": "${workspaceFolder}/.vscode/chrome",
"runtimeArgs": [
"--disable-session-crashed-bubble"
]
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200",
"port": 9222,
"webRoot": "${workspaceFolder}",
"sourceMaps": true
}
]
}
launch.json for angular/cli < 1.0.0-beta.32
{
"version": "0.2.0",
"configurations": [
{
"name": "Lunch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/src/app",
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///./~/*": "${workspaceFolder}/node_modules/*",
"webpack:///./src/*": "${workspaceFolder}/src/*"
},
"userDataDir": "${workspaceFolder}/.vscode/chrome",
"runtimeArgs": [
"--disable-session-crashed-bubble"
]
},
{
"name": "Attach Chrome",
"type": "chrome",
"request": "attach",
"url": "http://localhost:4200",
"port": 9222,
"webRoot": "${workspaceFolder}/src/app",
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///./~/*": "${workspaceFolder}/node_modules/*",
"webpack:///./src/*": "${workspaceFolder}/src/*"
}
}
]
}
답변
VS Code 팀이 이제 디버깅 레시피를 저장하고있는 것 같습니다.
https://github.com/Microsoft/vscode-recipes/tree/master/Angular-CLI
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome with ng serve",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceRoot}"
},
{
"name": "Launch Chrome with ng test",
"type": "chrome",
"request": "launch",
"url": "http://localhost:9876/debug.html",
"webRoot": "${workspaceRoot}"
},
{
"name": "Launch ng e2e",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/protractor/bin/protractor",
"protocol": "inspector",
"args": ["${workspaceRoot}/protractor.conf.js"]
}
]
}
답변
이를 수행하는 방법에는 두 가지가 있습니다. 새 프로세스를 시작 하거나 첨부 할 수 있습니다. 기존 .
두 프로세스의 핵심은 웹팩 개발 서버와 VSCode 디버거를 동시에 실행하는 것 입니다.
프로세스 시작
-
당신의에서
launch.json
파일을 다음과 같은 구성을 추가 :{ "version": "0.2.0", "configurations": [ { "name": "Angular debugging session", "type": "chrome", "request": "launch", "url": "http://localhost:4200", "webRoot": "${workspaceFolder}" } ] }
-
Angular CLI에서 Webpack dev server를 실행하여
npm start
- VSCode 디버거로 이동하여 “각도 디버깅 세션”구성을 실행합니다. 결과적으로 애플리케이션이있는 새 브라우저 창이 열립니다.
기존 프로세스에 연결
-
이를 위해 열린 포트로 디버거 모드에서 Chrome을 실행해야합니다 (제 경우에는
9222
).맥:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
Windows :
chrome.exe --remote-debugging-port=9222
-
launch.json
파일은 다음과 같이 보입니다.{ "version": "0.2.0", "configurations": [ { "name": "Chrome Attach", "type": "chrome", "request": "attach", "port": 9222, "url": "http://localhost:4200/", "webRoot": "${workspaceFolder}" } ] }
- Angular CLI에서 Webpack dev server를 실행하여
npm start
- “Chrome Attach”구성을 선택하고 실행합니다.
이 경우 디버거는 새 창을 시작하는 대신 기존 Chrome 프로세스에 연결됩니다.
나는이 접근법을 삽화와 함께 설명하는 내 기사를 썼다.
VSCode에서 Angular 용 디버거를 구성하는 방법에 대한 간단한 지침
답변
이것은 Visual Studio Code 사이트 ( https://code.visualstudio.com/docs/nodejs/angular-tutorial) 에 자세히 설명되어 있습니다.
답변
이 구성을 사용할 수 있습니다.
{
"version": "0.2.0",
"configurations": [
{
"name": "ng serve",
"type": "chrome",
"request": "launch",
"preLaunchTask": "npm: start",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
답변
다음은 약간 더 가벼운 솔루션이며 Angular 2+에서 작동합니다 (Angular 4를 사용하고 있습니다)
MEAN 스택을 실행하는 경우 Express Server에 대한 설정도 추가되었습니다.
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Angular Client",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"runtimeArgs": [
"--user-data-dir",
"--remote-debugging-port=9222"
],
"sourceMaps": true,
"trace": true,
"webRoot": "${workspaceRoot}/client/",
"userDataDir": "${workspaceRoot}/.vscode/chrome"
},
{
"type": "node",
"request": "launch",
"name": "Launch Express Server",
"program": "${workspaceRoot}/server/bin/www",
"outFiles": [
"${workspaceRoot}/out/**/*.js"
]
}
]
}
답변
@Asesjix 답변은 매우 철저하지만 일부가 지적했듯이 ng serve
Chrome에서 Angular 앱 을 시작 하고 실행 하려면 여전히 여러 상호 작용이 필요합니다 . 다음 구성을 사용하여 한 번의 클릭으로 작동합니다. @Asesjix의 대답과의 주요 차이점은 작업 유형이 지금 shell
이고 명령 호출이 start
이전에 추가 ng serve
되므로 ng serve
자체 프로세스에 존재할 수 있으며 디버거가 시작되는 것을 차단하지 않는다는 것입니다.
tasks.json :
{
"version": "2.0.0",
"tasks": [
{
"label": "ng serve",
"type": "shell",
"command": "\"start ng serve\""
},
{
"label": "ng test",
"type": "shell",
"command": "\"start ng test\"",
}
]
}
launch.json :
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch in Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}",
"preLaunchTask": "ng serve"
}
]
}