VS Code sourceMapPathOverrides

Zoo*_*Way 5 source-maps visual-studio-code

我有一个 Aurelia TypeScript 项目,其中我编译的 JavaScript 文件进入.../wwwroot子文件夹,原始打字稿文件位于.../src. 我试图使用VS代码在Chrome扩展调试断点,但不打,当我打开diagnosticLogginglaunch.json的映射的源是不正确:它看在.../wwwroot/src/file.ts来代替.../src/file.ts

我试图解决这个问题,sourceMapPathOverrides但没有成功。看来我无法匹配我的 sourceRoot。

我试过这个:

"webRoot": "${workspaceRoot}/wwwroot",
"sourceMapPathOverrides": {
    "/src/*": "${workspaceRoot}/src/*"     
},
Run Code Online (Sandbox Code Playgroud)

这是用于查找源的调试控制台输出login.js

›SourceMaps.loadSourceMapContents: Reading local sourcemap file from ...\wwwroot\dist\login.js.map
›SourceMap: creating for ...\wwwroot\dist\login.js
›SourceMap: sourceRoot: /src
›SourceMap: sources: ["login.ts"]
›SourceMap: webRoot: .../wwwroot
›SourceMap: resolved sourceRoot /src -> ...\wwwroot\src
›SourceMaps.scriptParsed: ...\wwwroot\dist\login.js was just loaded and has mapped sources: ["...\\wwwroot\\src\\login.ts"]
Run Code Online (Sandbox Code Playgroud)

注意:三个点...代表我在磁盘上删除的项目根目录路径。

我如何使用sourceMapPathOverrides有它查找login.ts.../src/


由于建议,我尝试设置webRootworkspaceRoot

"webRoot": "${workspaceRoot}"
Run Code Online (Sandbox Code Playgroud)

这样映射的源文件是正确的并且断点起作用。但是日志还说:

Paths.scriptParsed:无法将http://localhost:9000/dist/login.js解析为 webRoot 下的文件:c:\Users\username\Source\Repos\myproject。它可能是外部的,也可能是直接从服务器的内存中提供的(没关系)。

网络服务器提供的wwwroot文件夹是我项目中的子文件夹,所以从描述设置webRootworkspaceRoot是错误的。可能会出现哪些其他问题,或者@Steffen 的建议是否有效?

为了确保,这是文件夹结构

/                    (project/source/git root)
/src                 (contains typescript, html files, is sourceRoot in source mapping)
/src/login.ts
/wwwroot             (root folder served by dev web server, should be webRoot shouldn't it?)
/wwwroot/index.html  (file opened by http://localhost:9000/ which starts Aurelia bootstrapper)
/wwwroot/config.js   (SystemJS config, maps * to dist/* )
/wwwroot/dist        (folder containing compiled application files)
/wwwroot/dist/login.js
Run Code Online (Sandbox Code Playgroud)

use*_*708 0

这在 VSCode 中对我有用launch.json

{
... // other bits

    "sourceMapPathOverrides": {
      "webpack:/*": "${webRoot}/*",
      "/./*": "${webRoot}/*",
      "/src/*": "${webRoot}/*",
      "/*": "*",
      "/./~/*": "${webRoot}/node_modules/*"
    },

... // other bits
}
Run Code Online (Sandbox Code Playgroud)