调试 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
。
另请参阅 Node.js 调试,获取示例和进一步的解释。
映射输出位置
如果生成的(转换后的)JavaScript 文件没有与其源代码位于同一位置,您可以通过在启动配置中设置 outFiles
属性来帮助 VS Code 调试器找到它们。每当您在原始源代码中设置断点时,VS Code 都会尝试通过搜索 outFiles
中 glob 模式指定的文件来查找生成的源代码。
客户端调试
TypeScript 非常适合编写客户端代码和 Node.js 应用程序,您可以使用 内置的 Edge 和 Chrome 调试器调试客户端源代码。
我们将创建一个小的 Web 应用程序来演示客户端调试的实际应用。
创建一个名为 HelloWeb
的新文件夹,并添加三个文件:helloweb.ts
、helloweb.html
和 tsconfig.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 文件,创建一个 launch.json
文件,选择 Web 应用程序 (Edge) 作为调试器,如果您愿意,可以选择 Web 应用程序 (Chrome)。
更新 launch.json
以指定 helloweb.html
的本地文件 URL
{
"version": "0.2.0",
"configurations": [
{
"type": "msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "file:///C:/Users/username/HelloWeb/helloweb.html",
"webRoot": "${workspaceFolder}"
}
]
}
运行和调试 视图配置下拉列表中现在将显示新的配置 针对 localhost 启动 Edge。如果您运行该配置,您的浏览器将使用您的网页启动。在编辑器中打开 helloweb.ts
,然后单击左侧的装订线以添加断点(它将显示为一个红色圆圈)。按 F5 启动调试会话,这将启动浏览器并在 helloweb.ts
中命中您的断点。
常见问题
无法启动程序,因为找不到相应的 JavaScript
您可能未在 tsconfig.json
中设置 "sourceMap": true
或在 launch.json
中设置 outFiles
,VS Code Node.js 调试器无法将您的 TypeScript 源代码映射到正在运行的 JavaScript。启用源代码映射并重新构建项目。