我有一个Aurelia TypeScript项目,我编译的JavaScript文件进入.../wwwroot
子文件夹,原始的打字稿文件位于.../src
。我正在尝试在VS代码中使用Chrome调试程序扩展程序但是没有点击断点,当我在diagnosticLogging
中打开launch.json
时,映射的源代码不正确:它会查看.../wwwroot/src/file.ts
而不是.../src/file.ts
。
我试图用sourceMapPathOverrides
解决这个问题,但没有成功。看来我无法匹配我的sourceRoot。
我试过了:
"webRoot": "${workspaceRoot}/wwwroot",
"sourceMapPathOverrides": {
"/src/*": "${workspaceRoot}/src/*"
},
这是用于查找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"]
注意:三个点...
代表我在磁盘上删除的项目根路径。
如何使用sourceMapPathOverrides
在login.ts
中查找.../src/
?
由于建议,我尝试将webRoot
设置为workspaceRoot
,如下所示:
"webRoot": "${workspaceRoot}"
这样映射的源文件是正确的,断点也可以工作。但日志也说:
Paths.scriptParsed:无法将http://localhost:9000/dist/login.js解析为webRoot下的文件:c:\ Users \ username \ Source \ Repos \ myproject。它可以是外部的,也可以直接从服务器的内存中提供(没关系)。
网络服务器提供的文件夹是我项目中的wwwroot
子文件夹,因此从说明设置webRoot
到workspaceRoot
是错误的。可能会出现哪些其他问题或者@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