Отладка углового клипа с неработающей картой исходного кода
Привет, я создал приложение, используя angular-cli, и я пытаюсь отладить его, используя vs code и Debugger для расширения chrome. Через некоторое время я смог заставить это работать, ну вроде как. То, что происходит, - то, что я могу установить точку останова в моем классе машинописного текста, но это помещено в неправильный номер строки как карта источника, неправильная.
Процесс отладки - откройте терминал и выберите вкладку отладки и нажмите F5 в vscode
У меня есть следующее: я использую конфигурацию LaunchChrome
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "LaunchChrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"diagnosticLogging": true,
"userDataDir": "${workspaceRoot}/.vscode/chrome",
"sourceMapPathOverrides": {
"webpack:///C:*": "c:/*"
}
},
{
"name": "AttachChrome",
"type": "chrome",
"request": "attach",
"port": 9222,
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"diagnosticLogging": true,
"sourceMapPathOverrides": {
"webpack:///*": "/*"
}
}
]
}
Угловой-cli.json
{
"project": {
"version": "1.0.0-beta.18",
"name": "frontend"
},
"apps": [
{
"root": "src",
"outDir": "./dist",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"styles.css",
"../semantic/dist/packaged/semantic.css"
],
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../semantic/dist/packaged/semantic.js",
"../node_modules/chart.js/dist/Chart.bundle.js"
],
"environments": {
"source": "environments/environment.ts",
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"addons": [],
"packages": [],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"prefixInterfaces": false,
"inline": {
"style": false,
"template": false
},
"spec": {
"class": false,
"component": true,
"directive": true,
"module": false,
"pipe": true,
"service": true
}
}
}
tsconfig.json
{
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"module": "es6",
"moduleResolution": "node",
"outDir": "../dist",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}
2 ответа
Я обновил до angular-cli-beta19-3 и typcript 2.0.6 и очистил кеш в chrome, теперь он работает.
ОБНОВЛЕНИЕ: используя угловой 2.4.1 сейчас
Что смешного в том, что он не работает с
"sourceMapPathOverrides": {
"webpack:///*": "${webRoot}/*"
}
определяется здесь https://github.com/Microsoft/vscode-chrome-debug
но это работает с
"sourceMapPathOverrides": {
"webpack:///C:*": "c:/*"
}
и для Linux, как сказал @carpinchosaurio
"webpack:///*": "/*"
ОБНОВЛЕНИЕ 21.02.2017:
В новых версиях angular и typcript больше не требуется переопределение пути к исходной карте.
"@angular/compiler-cli": "2.4.8",
"@angular/cli": "1.0.0-beta.32.3",
"typescript": "2.1.6"
angular version 2.4.8
Рабочая настройка:
{
"version": "0.2.0",
"configurations": [
{
"name": "LaunchChrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"userDataDir": "${workspaceRoot}/.vscode/chrome"
}
]
}
Для всех, кто еще заинтересован, это работало для меня -
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4200",
"sourceMaps": true,
"webRoot": "${workspaceRoot}/src",
"userDataDir": "${workspaceRoot}/.vscode/chrome",
"sourceMapPathOverrides": {
"webpack:///./~/*": "${workspaceRoot}/node_modules/*",
"webpack:///./src/*": "${workspaceRoot}/src/*"
}
// Uncomment this to get diagnostic logs in the console
// "diagnosticLogging": true
}
Просто чтобы подчеркнуть обновленный ответ: в настоящее время не требуетсяsourceMapPathOverrides
недвижимость в вашем launch.json
. Если вы обновляете проект со старого Angular, просто удалите свойство, и отладка начнет работать.