webRoot 变量允许您引用本地源文件所在的目录。
默认指向${workspaceFolder},通常是文件所在的位置。
在内部,它用于将源映射绑定到本地文件。它设置了sourceMapPathOverrides 的默认值,如下所示:
const DefaultWebSourceMapPathOverrides: ISourceMapPathOverrides = {
'webpack:///./~/*': '${webRoot}/node_modules/*',
'webpack:///./*': '${webRoot}/*',
'webpack:///*': '*',
'webpack:///src/*': '${webRoot}/*',
'meteor://?app/*': '${webRoot}/*'
};
如果您的Visual Studio Code 没有保留您的断点,可能是由不同的原因造成的:
- 源地图不可用。
- chrome 的远程调试被禁用。
使用chrome.exe --remote-debugging-port=9222 启用启动 chrome。
-
launch.json 的属性 url 中的模式与应用的网址不匹配。
- 源映射未正确绑定。
launch.json 中的属性 sourceMapPathOverrides 将源映射路径映射到本地源文件。
如果您尚未定义更多路径,您的 Debugger for Chrome 映射如下:
-
webpack:///./~/* 到 ${workspaceFolder}/../ui-web-server/node_modules/*
-
webpack:///./* 到 ${workspaceFolder}/../ui-web-server/*
-
webpack:///src/* 到 ${workspaceFolder}/../ui-web-server/*
-
meteor://?app/* 到 ${workspaceFolder}/../ui-web-server/*
如果您没有使用webpack 或meteor,您可能有不同的源映射路径。
为了探索我的应用程序的源映射结构,我使用了Chrome Developer Tools。在Sources 下,您可以轻松浏览它们并发现路径。
这是一个例子launch.json。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to something",
"type": "chrome",
"request": "attach",
"port": 9222,
"url": "http://localhost:8081/*",
"webRoot": "${workspaceFolder}/../Application",
"sourceMapPathOverrides": {
"webpack://Module/*": "${workspaceFolder}/Module/*"
}
}
]
}
希望这有助于理解它并使其运行。