답변:
launch.json
(.vscode 폴더 내부) 만들기launch.json
(아래 참조)tasks.json
(.vscode 폴더 내부) 만들기tasks.json
(아래 참조)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
}
}
]
}
launch.json
launch.json
(아래 참조)ng serve
)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/*"
}
}
]
}
NG Live Development Server
하고 시작하는 방법을 알고 있습니까? Chrome
F5
launch.json
하고 tasks.json
여기 않습니다. 내가 이해했듯이 launch.json
노드 서버를 시작하고 포트 8080을 수신 하고 응용 프로그램을 실행하기 위해 명령 을 tasks.json
사용 npm
하고 실행하도록 지시 ng serve
합니다.
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
이를 위해 열린 포트로 디버거 모드에서 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}"
}
]
}
npm start
이 경우 디버거는 새 창을 시작하는 대신 기존 Chrome 프로세스에 연결됩니다.
나는이 접근법을 삽화와 함께 설명하는 내 기사를 썼다.
chrome.exe --remote-debugging-port=9222
마다이 명령을 실행해야합니다. 일회성 구성에 대한 대안 이 있습니까
이것은 Visual Studio Code 사이트 ( https://code.visualstudio.com/docs/nodejs/angular-tutorial) 에 자세히 설명되어 있습니다.
다음은 약간 더 가벼운 솔루션이며 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"
}
]
}
제 경우에는 원래 Angular 프로젝트 폴더 트리를 사용하지 않았고 webRoot
/ {workspaceFolder}
비트에 문제가 있음을 알았지 만 모든 실험에서 결과가 나오지 않았습니다. 다시 찾으면 링크 할 다른 SO 답변에서 팁을 얻었습니다.
저에게 도움이 된 것은 {workspaceFolder}
런타임에 변수의 내용을 찾은 다음 "app / *"이있는 "src"폴더의 위치로 수정하는 것입니다. 이를 찾기 위해 preLaunchTask
launch.json 파일에를 추가하고 {workspaceFolder}
.
Chrome 디버거를 설치 한 후 나타나는 launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}/src/newProjectRoot/",
"preLaunchTask": "Echo values" //Just to see what the cryptic vs code variables actually are https://code.visualstudio.com/docs/editor/variables-reference
}
]
}
Tasks.json 기본적으로 존재하지 않습니다. Ctrl + Shift + p를 누르면 '다른 명령에 대한 작업 만들기'또는 이와 유사한 것으로 생각됩니다. tasks.json이 생성 된 후 볼 수없는 것 같습니다. launch.json 과 동일한 위치에 파일을 생성 할 수도 있습니다.
{
"version": "2.0.0",
"tasks": [
{
"label": "Echo values",
"command": "echo",
"args": ["${env:USERNAME}", "workspaceFolder = ${workspaceFolder}"],
"type": "shell"
}
]
}
$ {workspaceFolder}의 값을 알고 나면 새 프로젝트 트리의 src 폴더를 가리 키도록 수정했고 모두 작동했습니다. 디버깅은 사전 ng serve
실행 작업 또는 빌드의 일부 (위의 예) 또는 명령 프롬프트에서 실행되어야합니다.
다음 은 사용할 수있는 모든 변수에 대한 링크입니다.