Отладка углового клипа с неработающей картой исходного кода

Привет, я создал приложение, используя 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, просто удалите свойство, и отладка начнет работать.

Другие вопросы по тегам