VS Code `launch.json` 指南(Node.js版)-Day30 一、launch.json是什么简单说它就是 VS Code 的**“调试启动器说明书”**。平时你调试 Node.js 程序可能是在终端里输入nodeindex.js而launch.json就是告诉 VS Code“以后我按 F5 的时候你就帮我执行这条命令并且挂上调试器”。文件位置你的项目/ ├── .vscode/ │ └── launch.json ← 在这里 ├── index.js └── package.json二、Node.js 最常用的 4 种配置下面这 4 个配置覆盖了 90% 的日常场景直接复制就能用。场景 1调试当前打开的 JS 文件适合写了个小脚本想快速跑一下看看结果。{version:0.2.0,configurations:[{name:运行当前文件,type:node,request:launch,program:${file}}]}用法在 VS Code 里打开某个.js文件 → 按F5就会运行这个文件。${file}是个变量表示当前打开的文件。场景 2调试 Express / Koa 服务器适合后端 API 开发启动一个 HTTP 服务。{version:0.2.0,configurations:[{name:启动服务器,type:node,request:launch,program:${workspaceFolder}/server.js,env:{NODE_ENV:development,PORT:3000},console:integratedTerminal}]}关键字段解释字段作用program服务器入口文件路径${workspaceFolder}表示项目根目录env环境变量这里设置了开发模式和端口号console输出到哪里integratedTerminal表示 VS Code 内置终端场景 3用 npm 脚本启动推荐适合项目用npm start或npm run dev启动比如 Next.js、NestJS 项目。{version:0.2.0,configurations:[{name:npm run dev,type:node,request:launch,runtimeExecutable:npm,runtimeArgs:[run,dev],console:integratedTerminal}]}等价于在终端执行npmrun dev只是 VS Code 会自动挂上调试器你可以在代码里打断点。场景 4Attach 到已运行的进程配合 nodemon适合用nodemon启动服务想在不重启的情况下附加调试。第一步用带--inspect的方式启动程序nodemon--inspectindex.js# 或者node--inspectindex.js终端会输出Debugger listening on ws://127.0.0.1:9229第二步launch.json配置{version:0.2.0,configurations:[{name:附加到进程,type:node,request:attach,port:9229,restart:true}]}⚠️request不是launch是attach“request”: “attach”, // ← 我不启动新程序我去连一个已有的“port”: 9229, // ← 连哪个端口就连上面开的 9229“restart”: true // ← 如果程序重启了自动重新连restart: true的作用当你修改代码后nodemon会自动重启服务调试器也会自动重新连上不用手动操作。三、一个全能版配置把上面 4 个场景合并到一个文件里按F5旁边的下拉框切换{version:0.2.0,configurations:[{name:▶ 运行当前文件,type:node,request:launch,program:${file},console:integratedTerminal},{name: 启动服务器,type:node,request:launch,program:${workspaceFolder}/server.js,env:{NODE_ENV:development},console:integratedTerminal},{name: npm run dev,type:node,request:launch,runtimeExecutable:npm,runtimeArgs:[run,dev],console:integratedTerminal},{name: 附加到 nodemon,type:node,request:attach,port:9229,restart:true}]}四、常见问题1. 断点打上去是灰色的不生效原因你运行的是编译后的代码比如 TypeScript 转成的 JS但断点打在源文件上。解决需要配置sourceMap或者直接用 ts-node 调试{name:调试 TypeScript,type:node,request:launch,runtimeExecutable:npx,runtimeArgs:[ts-node,${file}],console:integratedTerminal}2. 环境变量没生效检查优先级launch.json里的env会覆盖系统环境变量。如果你同时用了.env文件建议装dotenv扩展或者在runtimeArgs里加载。3. 按 F5 没反应检查 VS Code 左下角是否显示了正确的调试配置名称。如果没有launch.jsonVS Code 会尝试自动推断但不一定准。4. 怎么传命令行参数args:[--port,3000,--verbose]这等价于nodeserver.js--port3000--verbose五、快速上手步骤打开你的 Node.js 项目按CtrlShiftD或点击左侧调试图标点击创建 launch.json 文件 → 选择Node.jsVS Code 会自动生成基础配置根据上面的模板修改保存按F5开始调试六、调试快捷键按键作用F5启动 / 继续运行Shift F5停止F9在当前行打断点F10单步跳过不进入函数内部F11单步进入进入函数内部总结launch.json就是告诉 VS Code“按 F5 时怎么启动我的 Node 程序”。最常用就 4 种模式——运行当前文件、启动服务器、执行 npm 脚本、附加到已有进程。配好一次团队所有人都能直接用。

相关新闻

最新新闻

OneDrive 自动安装怎么办?禁用、卸载与防复活完整方案

OneDrive 自动安装怎么办?禁用、卸载与防复活完整方案

这次我们来看一个让不少 Windows 用户都皱眉头的问题:并没有主动安装 OneDrive,结果系统更新完,OneDrive 客户端自己出现在开始菜单和任务栏里。微软最近针对这类“不需要的 OneDrive 功能安装”给出了回应,态度比较直接&#xff…

2026/8/29 19:12:11
博客地下城彩蛋:基于Canvas碰撞检测的轻量前端实现

博客地下城彩蛋:基于Canvas碰撞检测的轻量前端实现

如果一个博客不只能读文章,还能在页面底部分明藏着一层可以探索的像素地牢,这样的互动彩蛋,最近确实让不少个人站长重新燃起了折腾博客的兴致。标题 “Theres a dungeon under this blog” 说的就是这种玩法:博客表面是内容&#…

2026/8/29 19:12:11
拆解SETI@Home:工作单元切分、结果校验与分布式计算范式

拆解SETI@Home:工作单元切分、结果校验与分布式计算范式

SETIHome 是早期互联网时代最有代表性的分布式计算项目之一。它把射电望远镜采集到的观测数据切成很小的数据片段,通过互联网分发给全球志愿者的个人电脑,让大量普通 CPU 在空闲时帮忙分析其中可能存在的地外文明信号。这个项目从 1999 年开放到 2020 年…

2026/8/29 19:12:11
Abliterated大模型如何恢复安全对齐?三种实战方法全解析

Abliterated大模型如何恢复安全对齐?三种实战方法全解析

先说一个很多同学在实验过程中都会冒出来的疑问:一个已经被 Abliterated 的大模型,安全对齐被“抹掉”之后,到底还能不能重新找回对齐能力?如果能,应该用什么方法找回,效果又如何?这篇文章会围绕…

2026/8/29 19:12:11
STM32F4定时器深度解析:从基础原理到PWM、捕获与多外设联动实战

STM32F4定时器深度解析:从基础原理到PWM、捕获与多外设联动实战

1. 从“计时”到“控制”:STM32F4定时器的核心价值 如果你刚开始接触STM32,可能会觉得定时器就是个“秒表”,用来做做延时。但当你真正用它去驱动电机、生成复杂波形、或者精确捕捉传感器信号时,才会发现,这个外设简直…

2026/8/29 19:12:11
LLM Agent对抗性反转测试:以hermes-agent为例

LLM Agent对抗性反转测试:以hermes-agent为例

我们这次要看的主题是“Adversarial LLM Reversal for hermes-agent”。如果只看这个标题,很多人会以为这是一个模型名称或者某个开源工具包。实际上,它更像是一类安全评估任务的组合:把 hermes-agent 这类 LLM Agent 系统当成被测对象&#…

2026/8/29 19:07:11