Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code VS代码源MapPathOverrides_Visual Studio Code_Source Maps - Fatal编程技术网

Visual studio code VS代码源MapPathOverrides

Visual studio code VS代码源MapPathOverrides,visual-studio-code,source-maps,Visual Studio Code,Source Maps,我有一个Aurelia TypeScript项目,其中我编译的JavaScript文件进入../wwwroot子文件夹,原始的TypeScript文件位于../src中。我试图在VS代码中使用Chrome调试器扩展,但未命中断点,当我在launch.json中打开diagnosticLogging时,映射的源代码不正确:它在../wwwwroot/src/file.ts中查找,而不是../src/file.ts 我试图用sourceMapPathOverrides解决这个问题,但没有成功。似乎我

我有一个Aurelia TypeScript项目,其中我编译的JavaScript文件进入
../wwwroot
子文件夹,原始的TypeScript文件位于
../src
中。我试图在VS代码中使用Chrome调试器扩展,但未命中断点,当我在
launch.json
中打开
diagnosticLogging
时,映射的源代码不正确:它在
../wwwwroot/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
../src/
中查找
login.ts


出于建议,我尝试将
webRoot
设置为
workspaceRoot
,如下所示:

"webRoot": "${workspaceRoot}"
这样,映射的源文件是正确的,断点可以工作。但日志上也说:

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

Web服务器提供的文件夹是我的项目中的
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

您是否尝试过launch.json中的
“webRoot”:“${workspaceRoot}”
?我不确定您的目录结构是否正确,但它应该将您的源映射解析为
${workspaceRoot}/src/login.ts
Hm,这样它就可以在VS代码工作中找到正确的源映射和断点。但我不确定其他事情是否会破裂。我将用我的一些发现更新这个问题,请稍候……你说得对,wwwroot应该是应用程序的正确webroot。但在这种情况下,将/src作为源文件的根是错误的。它应该是../src(相对于wwwroot)。也许您可以提供有关如何生成源映射的更多详细信息?如果无法控制源映射路径,请设置
“sourceMapPathOverrides”:{“${workspaceRoot}/wwwroot/src/*”:“${workspaceRoot}/src/*”}
应该可以工作。@Steffen我略微不同意,源根没有错误,但必须根据我在不同环境中托管文件的方式进行映射。我认为这是
sourceMapPathOverrides
的一个用例。我提出了一个问题,当在源映射中将尾部斜杠注入sourceRoot时,它看起来是有效的。我会一直这样做直到它被修复。