Ответы:
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}"
}
]
}
Запустите сервер Webpack dev из Angular CLI, выполнив npm start
Для этого нужно запустить Chrome в режиме отладчика с открытым портом (в моем случае это будет 9222
):
Mac:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
Окна:
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
могут существовать в собственном процессе и не блокировать запуск отладчика:
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}
bit, но все мои эксперименты не дали результата. Получил совет от другого SO-ответа, на который я свяжусь, если найду его снова.
Мне помогло найти содержимое переменной {workspaceFolder}
во время выполнения, а затем изменить его на расположение моей папки «src», в которой у вас есть «app / *». Чтобы найти его, я добавил preLaunchTask
в свой файл launch.json и задачу для вывода значения {workspaceFolder}
.
launch.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, и я думаю, это называется «создать задачу для другой команды» или что-то в этом роде. Кажется, не видно его после создания 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
чтобы она выполнялась либо как задача перед запуском, либо как часть сборки (примеры выше), либо в командной строке.
Вот ссылка на все переменные, которые вы можете использовать: