whi*_*elf 6 debugging visual-studio-code typescript1.8
我正在尝试使用VS Code Chrome调试器来调试Angular2(2.0.0-beta.9)和Typescript(v1.8.7).我在ts文件中设置断点但调试器正在显示js.当整个应用程序位于一个文件夹中时,调试器会显示ts,但当应用程序由子文件夹组成时,调试器的行为不正确.起初我以为它无法解析映射,但我已打开诊断程序,可以看到路径正在正确解析.
以下是诊断窗口中的示例:
›Paths.scriptParsed: resolved http://localhost:3000/bin/hero/hero.service.js to c:\MyDev\ng2\bin\hero\hero.service.js. webRoot: c:\MyDev\ng2
›SourceMaps.createSourceMap: Reading local sourcemap file from c:\MyDev\ng2\bin\hero\hero.service.js.map
›SourceMap: creating SM for c:\MyDev\ng2\bin\app.component.js
›SourceMap: no sourceRoot specified, using script dirname: c:\MyDev\ng2\bin
›SourceMaps.scriptParsed: c:\MyDev\ng2\bin\app.component.js was just loaded and has mapped sources: ["c:\\MyDev\\ng2\\app\\app.component.ts"]
›SourceMaps.scriptParsed: Resolving pending breakpoints for c:\MyDev\ng2\app\app.component.ts
Run Code Online (Sandbox Code Playgroud)
tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "bin"
},
"exclude": [
"node_modules",
"typings"
]
}
Run Code Online (Sandbox Code Playgroud)
来自launch.json的部分:
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000/index.html",
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"diagnosticLogging": true
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,源代码到 Webpack 文件的正确映射已经改变了几次。
您已经diagnosticLogging在 中打开了launch.json,这意味着您的 JavaScript 控制台中应该有如下行:
SourceMap: mapping webpack:///./src/main.ts => C:\Whatever\The\Path\main.ts
Run Code Online (Sandbox Code Playgroud)
这应该可以让您清楚地了解它试图在哪里搜索源代码。
然后您sourceMapPathOverrides向 中添加一个条目launch.json以帮助它找到您的文件。它应该看起来像这样:
"sourceMapPathOverrides": {
"webpack:///./*": "${workspaceRoot}/SourceFolder/*"
},
Run Code Online (Sandbox Code Playgroud)
显然,将 SourceFolder 替换为实际路径。
编辑:
在 2019 年,这仍然有效,但启用它的方式已经改变。diagnosticLogging已替换为trace,它只有一个有效值,即trace。
所以你的设置将如下所示:
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000/index.html",
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"trace": "verbose"
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供大量输出,仍然包括以 开头的行SourceMap: mapping,您可以使用它们来构建正确的集合,sourceMapPathOverrides如前面所述。
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |