🚀 在 VS Code 中

在 VS Code 中调试浏览器

Visual Studio Code 内置了 Edge 和 Chrome 的调试器。 有几种方法可以开始使用它。

我们还有更详细的演练,以帮助你开始使用 ReactAngularVue,以及其他调试秘诀

调试网页的最简单方法是通过命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))中的 调试: 打开链接 命令。 运行此命令时,系统将提示你输入要打开的 URL,并且调试器将附加到该 URL。

Using the Open Link command to attach to a URL

如果你的默认浏览器是 Edge,VS Code 将使用它来打开页面。 否则,它将尝试在你的系统上查找 Chrome 的安装。

启动配置

启动配置是在 VS Code 中设置调试的传统方式,并为你运行复杂应用程序提供了最大的灵活性。

在本节中,我们将更详细地介绍更高级调试场景的配置和功能。 Node.js 跳过不感兴趣的代码的说明也适用于基于浏览器的调试。

注意:如果你刚开始使用 VS Code,你可以在调试主题中了解有关常规调试功能和创建 launch.json 配置文件的信息。

启动浏览器

在大多数情况下,你都希望启动浏览器的新实例来调试你的网页或文件。 为此,你可以创建一个名为 .vscode/launch.json 的文件,如下所示

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "msedge",
      "request": "launch",
      "name": "Launch my cool app",
      "url": "https://127.0.0.1:8000"
    }
  ]
}

当你点击 F5运行和调试 视图中的 启动 按钮时,https://127.0.0.1:8000 将在调试模式下打开。 如果你想使用 Chrome 而不是 Edge,请将 msedge 替换为 chrome

你也可以在不运行服务器的情况下调试单个文件,例如

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "msedge",
      "request": "launch",
      "name": "Launch hello.html",
      "file": "${workspaceFolder}/hello.html"
    }
  ]
}

附加到浏览器

要附加到正在运行的浏览器,需要以特殊的调试模式启动它。 你可以使用以下命令执行此操作,将 edge.exe 替换为你的 Edge 或 Chrome 二进制文件的路径

edge.exe --remote-debugging-port=9222 --user-data-dir=remote-debug-profile

设置 --remote-debugging-port 会告诉浏览器侦听该端口以进行调试连接。 设置单独的 --user-data-dir 会强制打开浏览器的新实例; 如果未提供此标志,则该命令将打开任何正在运行的浏览器的新窗口,并且不会进入调试模式。

接下来,在 vscode/launch.json 文件中添加一个新部分,如下所示

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "msedge",
      "request": "attach",
      "name": "Attach to browser",
      "port": 9222
    }
  ]
}

现在,你可以按 F5运行和调试 视图中的 启动 按钮以附加到正在运行的浏览器。 你甚至可以添加 address 属性来调试在不同计算机上运行的浏览器。

启动配置属性

调试配置存储在位于你的工作区的 .vscode 文件夹中的 launch.json 文件中。 常规调试文章中介绍了调试配置文件的创建和使用。 你可以“启动”带有你的应用程序的浏览器,或者“附加”到你在调试模式下启动的现有浏览器。

以下是特定于浏览器调试的常见 launch.json 属性的参考。 你可以在 vscode-js-debug 选项文档中查看完整的选项集。

  • webRoot - 你的源代码的根目录。 通常,默认情况下,webRoot 是你的工作区文件夹。 此选项用于源映射解析。
  • outFiles - 用于查找生成的 JavaScript 文件的 glob 模式 数组。 请参阅有关源映射的部分。
  • smartStep - 尝试自动跳过未映射到源文件的源代码。 请参阅有关智能步进的部分。
  • skipFiles - 自动跳过这些 glob 模式 涵盖的文件。 请参阅有关跳过不感兴趣的代码的部分。
  • trace - 启用诊断输出。

这些属性仅适用于请求类型为 launch 的启动配置

  • url - 浏览器启动时自动打开的 URL。
  • runtimeExecutable - 要使用的浏览器可执行文件的绝对路径,或要使用的浏览器版本。 有效版本包括 stable(默认)、canarybetadev
  • runtimeArgs - 启动浏览器时传递的可选参数。

这些属性仅适用于请求类型为 attach 的启动配置

  • url - 如果给定,VS Code 将附加到具有此 URL 的选项卡。 如果未提供,它将附加到所有浏览器选项卡。
  • port - 用于远程调试浏览器的端口,与启动浏览器时使用的 --remote-debugging-port 匹配。 请参阅有关附加到浏览器的部分。
  • address - 调试的浏览器正在侦听的 IP 地址或主机名。 请参阅有关附加到浏览器的部分。

WebAssembly 调试

浏览器中的 WebAssembly 调试与 Node.js 相同,在此处阅读有关 WebAssembly 调试的更多信息

源映射

VS Code 中的 JavaScript 调试器支持源映射,该源映射允许调试转换后的代码。 例如,TypeScript 代码被编译为 JavaScript,许多 Web 应用程序将其所有 JavaScript 文件捆绑在一起。 源映射帮助调试器弄清楚如何在你的原始代码和浏览器中运行的代码之间进行映射。

用于构建 Web 应用程序的大多数现代工具都可以开箱即用。 如果不是,我们关于 Node.js 中的源映射的部分包含也适用于浏览器调试的指南。

加载源映射

每个 JavaScript 文件都可以通过 URL 或相对路径引用源映射。 在处理 Web 应用程序时,你需要确保 URL 是在 VS Code 中运行的调试器可以访问的 URL。 如果无法访问,你将在 调试控制台 中看到错误,说明哪些源映射加载失败以及原因。

如果无法直接访问它,VS Code 将尝试使用浏览器的网络堆栈来请求源映射。 这为浏览器中的任何身份验证状态或网络设置应用于请求提供了机会。 例如,如果你的源映射位于受 Cookie 身份验证保护的位置,则仅当浏览器会话具有必要的 Cookie 时,VS Code 才能加载它们。

后续步骤

  • 调试 - 阅读有关常规 VS Code 调试功能的信息。
  • 调试秘诀 - 为你喜欢的平台设置调试。