现已发布!阅读有关一月份的新功能和修复。

调试 TypeScript

Visual Studio Code 通过其内置的 Node.js 调试器Edge 和 Chrome 调试器 支持 TypeScript 调试。

JavaScript 源映射支持

TypeScript 调试支持 JavaScript 源映射。要为 TypeScript 文件生成源映射,请使用 --sourcemap 选项编译,或在 tsconfig.json 文件中将 sourceMap 属性设置为 true

也支持内联源映射(一种将源内容存储为数据 URL 而不是单独文件的源映射),尽管尚未支持内联源。

有关源映射实际应用的简单示例,请参阅 TypeScript 教程,其中展示了使用以下 tsconfig.json 和 VS Code 默认 Node.js 调试配置调试一个简单的“Hello World”Node.js 应用程序。

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS",
    "outDir": "out",
    "sourceMap": true
  }
}

对于更高级的调试场景,您可以创建自己的调试配置 launch.json 文件。要查看默认配置,请转到 **运行和调试** 视图(⇧⌘D (Windows, Linux Ctrl+Shift+D))并选择 **创建 launch.json 文件** 链接。

这将在 .vscode 文件夹中创建一个 launch.json 文件,其中包含根据您的项目检测到的默认值。

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "program": "${workspaceFolder}/helloworld.ts",
      "preLaunchTask": "tsc: build - tsconfig.json",
      "outFiles": ["${workspaceFolder}/out/**/*.js"]
    }
  ]
}

VS Code 已确定要启动的程序 helloworld.ts,将构建作为 preLaunchTask 包含进来,并告知调试器在哪里可以找到生成的 JavaScript 文件。

launch.json 具有完整的 IntelliSense,提供建议和信息,以帮助您了解其他调试配置选项。您也可以使用右下角的 **添加配置** 按钮向 launch.json 添加新的调试配置。

launch.json IntelliSense

另请参阅 Node.js 调试 以获取示例和进一步的解释。

映射输出位置

如果生成的(转译的)JavaScript 文件不与源文件相邻,您可以通过在启动配置中设置 outFiles 属性来帮助 VS Code 调试器定位它们。每当您在原始源中设置断点时,VS Code 都会尝试通过搜索 outFiles 中由 glob 模式指定的文件来查找生成的源。

客户端调试

TypeScript 非常适合编写客户端代码以及 Node.js 应用程序,您可以使用 内置的 Edge 和 Chrome 调试器 调试客户端源代码。

我们将创建一个微型 Web 应用程序来演示客户端调试的实际应用。

创建一个新文件夹 HelloWeb 并添加三个文件:helloweb.tshelloweb.htmltsconfig.json,内容如下:

helloweb.ts

let message: string = 'Hello Web';
document.body.innerHTML = message;

helloweb.html

<!DOCTYPE html>
<html>
    <head><title>TypeScript Hello Web</title></head>
    <body>
        <script src="out/helloweb.js"></script>
    </body>
</html>

tsconfig.json

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS",
    "outDir": "out",
    "sourceMap": true
  }
}

运行 tsc 构建应用程序,然后在浏览器中打开 helloweb.html 进行测试(您可以右键单击文件资源管理器中的 helloweb.html 并选择 **复制路径** 粘贴到浏览器中)。

在“运行和调试”视图(⇧⌘D (Windows, Linux Ctrl+Shift+D))中,选择 **创建 launch.json 文件**,选择 **Web App (Edge)** 作为调试器(如果更喜欢,也可以选择 **Web App (Chrome)**)来创建 launch.json 文件。

更新 launch.json 以将本地文件 URL 指定为 helloweb.html

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "msedge",
      "request": "launch",
      "name": "Launch Edge against localhost",
      "url": "file:///C:/Users/username/HelloWeb/helloweb.html",
      "webRoot": "${workspaceFolder}"
    }
  ]
}

“运行和调试”视图的配置下拉列表现在将显示新的配置 **在本地主机上启动 Edge**。如果运行该配置,您的浏览器将启动并加载您的网页。在编辑器中打开 helloweb.ts 并单击左侧边栏添加一个断点(它将显示为一个红点)。按 F5 开始调试会话,这将启动浏览器并命中 helloweb.ts 中的断点。

client-side debug breakpoint

常见问题

无法启动程序,因为找不到相应的 JavaScript

您很可能没有在 tsconfig.json 中设置 "sourceMap": true,或者没有在 launch.json 中设置 outFiles,并且 VS Code Node.js 调试器无法将您的 TypeScript 源代码映射到正在运行的 JavaScript。请开启源映射并重新构建您的项目。

© . This site is unofficial and not affiliated with Microsoft.