VSCode调试:TypeScript源码调试

发布时间 - 2025-10-18 00:00:00    点击率:
首先确保tsconfig.json中启用sourceMap并配置rootDir和outDir,接着通过npx tsc编译生成.js.map文件,然后在VSCode的launch.json中设置调试配置,指向dist目录下的入口文件,并指定preLaunchTask为tsc构建任务,最后启动调试即可在TypeScript源码中设置断点并查看变量。

在使用 TypeScript 开发项目时,调试源码是开发过程中不可或缺的一环。VSCode 结合 Node.js 和正确的配置,可以让你直接在原始 TypeScript 文件中设置断点、查看变量、单步执行,而不需要手动去读编译后的 JavaScript 代码。以下是实现 TypeScript 源码调试的完整流程。

1. 确保生成 sourcemap

TypeScript 编译时必须生成 sourcemap,这样才能将编译后的 JavaScript 代码映射回原始的 .ts 源文件。

检查你的 tsconfig.json 文件,确保包含以下配置:

  • "sourceMap": true:生成 .js.map 文件
  • "outDir":指定输出目录(如 dist)
  • "rootDir":指定源码根目录(如 src)

示例 tsconfig.json:

{ "compilerOptions": { "target": "ES2025", "module": "commonjs", "outDir": "./dist", "rootDir": "./src", "sourceMap": true, "strict": true }, "include": ["src/**/*"] }

2. 使用 tsc 编译项目

在调试前,先通过 TypeScript 编译器将源码编译为 JavaScript。

运行命令:

npx tsc

这会在 dist 目录下生成带 .map 文件的 JavaScript 文件。

3. 配置 VSCode launch.json

在项目根目录下创建 文件,用于定义调试启动配置。

点击 VSCode 调试面板中的“添加配置”,选择 Node.js 环境,然后修改为如下内容:

{ "version": "0.2.0", "configurations": [ { "name": "调试 TypeScript", "type": "node", "request": "launch", "program": "${workspaceFolder}/dist/index.js", "outFiles": ["${workspaceFolder}/dist/**/*.js"], "skipFiles": [ "/**" ], "console": "integratedTerminal", "preLaunchTask": "tsc: 构建" } ] }

说明:

  • program:指向编译后的入口 JS 文件
  • outFiles:告诉调试器哪些是编译生成的文件,用于 sourcemap 匹配
  • preLaunchTask:在启动调试前自动运行构建任务

4. 添加预构建任务(可选但推荐)

为了让调试前自动编译,可在 中定义一个构建任务。

{ "version": "2.0.0", "tasks": [ { "label": "tsc: 构建", "type": "shell", "command": "npx tsc", "group": "build", "presentation": { "echo": true, "reveal": "silent" }, "problemMatcher": "$tsc" } ] }

这样每次启动调试都会先编译最新代码。

5. 开始调试

完成以上步骤后:

  • 打开一个 .ts 文件(如 src/index.ts)
  • 在某一行左侧点击设置断点
  • 切换到调试面板,选择“调试 TypeScript”配置
  • 点击“启动调试”按钮

程序会在你设置的 .ts 断点处暂停,你可以查看调用栈、变量值、逐行执行等。

基本上就这些。只要 sourcemap 正确生成,并且 launch.json 配置准确,VSCode 就能无缝调试 TypeScript 源码,无需关注 dist 中的 js 文件。


# javascript  # java  # vscode  # js  # node.js  # json  # node  # typescript  #  


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何构建满足综合性能需求的优质建站方案?  EditPlus中的正则表达式 实战(1)  如何实现建站之星域名转发设置?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何用5美元大硬盘VPS安全高效搭建个人网站?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何快速配置高效服务器建站软件?  制作电商网页,电商供应链怎么做?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Linux安全能力提升路径_长期防护思维说明【指导】  如何在建站宝盒中设置产品搜索功能?  如何快速重置建站主机并恢复默认配置?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel怎么使用artisan命令缓存配置和视图  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何快速登录WAP自助建站平台?  Android Socket接口实现即时通讯实例代码  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Android使用GridView实现日历的简单功能  简单实现jsp分页  如何在IIS7上新建站点并设置安全权限?  Laravel如何使用Blade组件和插槽?(Component代码示例)  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Python文件异常处理策略_健壮性说明【指导】  海南网站制作公司有哪些,海口网是哪家的?  如何在万网利用已有域名快速建站?  Laravel观察者模式如何使用_Laravel Model Observer配置  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何在腾讯云服务器快速搭建个人网站?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel如何使用.env文件管理环境变量?(最佳实践)  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  简单实现Android文件上传  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  潮流网站制作头像软件下载,适合母子的网名有哪些?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  lovemo网页版地址 lovemo官网手机登录  创业网站制作流程,创业网站可靠吗?