Відповіді:
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.jsonlaunch.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"]
}
]
}
Є два різні способи зробити це. Ви можете запустити новий процес або приєднати до вже існуючого.
Ключовим моментом в обох процесах є одночасне запуску сервера розробників webpack та відладчика VSCode .
У свій launch.jsonфайл додайте таку конфігурацію:
{
"version": "0.2.0",
"configurations": [
{
"name": "Angular debugging session",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"webRoot": "${workspaceFolder}"
}
]
}
Запустіть сервер розробників Webpack від Angular CLI, виконавши 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 замість запуску нового вікна.
Я написав власну статтю, де описав цей підхід ілюстраціями.
Проста інструкція, як налаштувати налагоджувач для Angular у VSCode
chrome.exe --remote-debugging-port=9222Чи є альтернатива для одноразової конфігурації
Це детально пояснено на сайті 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)
Також додано налаштування для Express Server, якщо ви запускаєте стек MEAN.
{
// 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та запуску програми Angular у Chrome все ж потрібно кілька взаємодій . Це я працював одним натисканням кнопки, використовуючи наступну конфігурацію. Основна відмінність від відповіді @ Asesjix полягає в тому, що тип завдання зараз є, shellа виклики команд додаються startраніше, ng serveщоб вони ng serveмогли існувати у власному процесі і не блокувати запуск відладчика:
task.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "ng serve",
"type": "shell",
"command": "\"start ng serve\""
},
{
"label": "ng test",
"type": "shell",
"command": "\"start ng test\"",
}
]
}
start.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}бітом але всі мої експерименти не дали результату. Отримав підказку з іншої відповіді, на яку я зв’яжу, якщо знову знайду її.
Що мені допомогло - знайти вміст змінної {workspaceFolder}під час виконання, а потім змінити її на розташування моєї папки "src", під якою у вас є "app / *". Щоб знайти його, я додав аpreLaunchTask у свій файл start.json і завдання вивести значення {workspaceFolder}.
start.json , який з’являється після встановлення налагоджувача Chrome
{
"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, і я думаю, що це називається "створити завдання для іншої команди" або щось подібне. Не можу бачити його після створення task.json. Ви також можете просто створити файл у тому самому місці, що і start.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Echo values",
"command": "echo",
"args": ["${env:USERNAME}", "workspaceFolder = ${workspaceFolder}"],
"type": "shell"
}
]
}
Як тільки я знав значення $ {workspaceFolder}, я виправив його, щоб вказати на свою папку src у моєму новому дереві проектів, і все працювало. Налагодження потрібно ng serveзапускати або як завдання перед запуском, або як частина збірки (приклади вище) або в командному рядку.
Ось посилання на всі змінні, які ви можете використовувати: