断点不触发的根本原因是请求未到达路由,而非调试配置错误;需检查中间件是否提前终止请求、program路径是否指向可执行js文件、端口是否冲突,以及源码与运行文件是否一致。

断点不触发?先确认请求真进到了路由里
Express/Koa 里设了断点却从不停,大概率不是调试器坏了,是请求压根没走到那行代码。比如 app.use(koaBody()) 因 body 太大或 JSON 格式错误直接抛错,后续所有路由都不会执行;又或者中间件里写了 ctx.status = 401; ctx.body = 'Unauthorized'; return; 提前终结了响应链。
实操建议:
- 在第一个中间件(比如日志中间件)里加
console.log('request entered'),用curl -v http://localhost:3000/api/users或 Postman 发请求,看终端是否打印日志;没日志就说明请求连入口都没进 - 检查
app.use(koaHelmet())或自定义鉴权中间件是否因ctx.ip解析失败而提前 return(尤其开了app.proxy = true却没配反向代理) - Koa 错误处理中间件(
app.on('error', ...))要设断点,很多异常根本没冒泡到路由层
launch.json 的 program 必须指向可执行的 .js 文件
VSCode 不会编译 TypeScript,也不理解 import 语法,program 字段只能填能被 node 直接运行的文件路径。写成 "${workspaceFolder}/src/app.ts" 或 "${workspaceFolder}/app.mjs" 都会失败。
实操建议:
- TypeScript 项目:编译后调试 →
program填"${workspaceFolder}/dist/app.js",并确保tsconfig.json中"sourceMap": true和"outDir": "./dist"已启用 - TypeScript 项目:想直接调试源码 → 改用
runtimeExecutable: "npx"+runtimeArgs: ["ts-node", "--project", "./tsconfig.json"],再把args设为["./src/app.ts"] - ESM 项目(
package.json含"type": "module"):program可以是.mjs,但 Node 版本必须 ≥ 18.17,且不要手动加--loader参数,避免和 VSCode 自动注入的--inspect冲突
用 nodemon 热重载时,别让 VSCode 直接跑它
很多人把 runtimeExecutable 设成 "nodemon" 或 "${workspaceFolder}/node_modules/.bin/nodemon",结果在 Windows 报 spawn nodemon ENOENT,在 macOS/Linux 找不到命令——这是因为 VSCode 启动时的 PATH 和你终端不一致。
实操建议:
- 推荐用
attach模式:先在终端运行npm run debug(脚本内容为nodemon --inspect-brk ./src/app.js),等看到Debugger listening on ws://127.0.0.1:9229/后,再在 VSCode 里选Attach to Process配置连过去 - 如果坚持用
launch模式,runtimeExecutable要指向绝对路径(如/usr/local/bin/nodemon),且runtimeArgs里只传参数,不重复加--inspect(VSCode 会自动注入) - 确保
nodemon版本 ≥ 3.0.0,旧版对--inspect-brk支持不稳定
端口冲突和环境变量必须显式处理
Koa 默认监听 3000,但 VSCode 调试器也默认用 9229 作为调试端口。两者不冲突,但开发时多个服务共存容易撞上——比如另一个 Node 进程也在用 9229,VSCode 就连不上。
实操建议:
- 在
launch.json的env字段里临时改 API 端口:"PORT": "3001",并在 Koa 入口代码里读取:const port = process.env.PORT || 3000 - 调试端口别依赖默认值,显式指定:
"port": 9230,然后启动命令也要同步:nodemon --inspect=9230 ./src/app.js - 如果用了 Docker 或 WSL,
launch.json里的sourceMaps路径映射必须手动配outFiles和pathMappings,否则断点会灰掉
launch.json 都没用。大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











