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": [ "说明:
- 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官网手机登录
创业网站制作流程,创业网站可靠吗?


outDir":指定输出目录(如 dist)