type和request必须匹配:node支持launch/attach;python、java、pwa-chrome等仅支持launch;选错会导致静默失败或“No debugger found”。

VSCode 里没有“开发者工具”这个独立模块,项目启动靠的是 launch.json 调试配置 + 终端命令 + 插件协同;直接改浏览器 DevTools 无法控制 VSCode 启动行为。
launch.json 中 type 和 request 怎么选才不报错
选错 type 是最常见卡点,VSCode 不会自动修正,只会静默失败或提示 “No debugger found for …”。request 必须和 type 匹配,否则调试器根本不会启动。
-
type: "node"→request: "launch"(运行本地.js或.ts入口)或"attach"(连接已运行的 Node 进程,如npm run dev启动的服务器) -
type: "python"→ 只支持request: "launch",且program必须指向一个可执行的.py文件,不能是目录或包名 -
type: "pwa-chrome"→ 几乎总是配request: "launch",但必须配合preLaunchTask启动本地服务(如npm start),否则 Chrome 打开空白页 -
type: "java"→request: "launch"时,program必须是.java主类路径(如src/main/java/com/example/App.java),不是.jar或pom.xml
preLaunchTask 找不到任务或执行失败
preLaunchTask 不是自动发现的,它依赖 .vscode/tasks.json 中定义的 label 字符串完全一致。大小写、空格、引号都不能差。
- 任务没定义?先在命令面板(
Ctrl+Shift+P)运行 “Tasks: Configure Task”,选 “Create tasks.json from template” → “Others”,手动填好label和command - 任务执行完就退出,但调试没启动?检查
isBackground是否设为true,并配好problemMatcher,否则 VSCode 认为任务“已完成”,立刻开始调试,而服务还没真正起来 - 想等 Webpack/HMR 就绪再调试?用
dependsOn链式任务,比如先build,再serve,最后debug,避免竞态 - Windows 上
cmd和PowerShell对命令解析不同:用npm run dev没问题,但mvn spring-boot:run在 PowerShell 里可能因别名冲突失败,建议显式指定shell类型
终端启动目录不是项目根目录
VSCode 终端默认工作目录(cwd)不等于你认为的“当前项目”,它取决于你如何打开 VSCode、是否用了 .code-workspace、以及有没有设置 terminal.integrated.cwd。
- 只用 GUI 双击打开文件夹?终端初始目录大概率是用户主目录,不是项目根目录 —— 必须手动
cd或改设置 - 想让每个终端都从当前打开的文件所在目录启动?设
"terminal.integrated.cwd": "${fileDirname}",但注意:如果没打开任何文件,这个变量为空,终端会 fallback 到主目录 - 多根工作区下,
${workspaceFolder}指的是“活动的”那个根目录,不是所有根目录 —— 如果你有frontend/和backend/两个文件夹,得确保你在backend/下打开文件,终端才会进 backend 目录 - 用
code -r ./my-project命令行启动,比 GUI 点开更可靠;但路径不能含~,code -r ~/project一定失败,得用code -r $HOME/project(macOS/Linux)或code -r %USERPROFILE%\project(Windows)
Spring Boot 项目启动后端口被占或无法访问
VSCode 本身不管理端口,但 launch.json 的 env 和 args 配置会影响 Spring Boot 实际行为,尤其和 Maven 插件、application.properties 冲突时。
- 明明配置了
server.port=9000,启动还是占 8080?检查launch.json里有没有漏掉"env": { "SPRING_PROFILES_ACTIVE": "dev" }—— profile 切换会导致配置文件加载顺序变化,application-dev.properties里的端口才生效 - 用
mvn spring-boot:run启动没问题,但用 Java 调试器(type: "java")启动就报错?因为调试器直接运行主类,绕过了 Maven 生命周期,@SpringBootApplication扫描路径、资源加载、甚至 Lombok 注解处理器都可能失效 —— 正确做法是用preLaunchTask调mvn compile,再用type: "java"启动编译后的 class - Chrome 调试前端时连不上后端 API?确认
proxy配置在vue.config.js或vite.config.ts里,而不是只改了launch.json—— 后者只管调试器,不管开发服务器代理逻辑
真正容易被忽略的是:VSCode 启动行为是三层叠加的——命令行参数 > 工作区 settings.json > 用户级 settings.json,而 launch.json 和 tasks.json 又各自读取环境变量、路径变量、插件状态。调不通时,先关掉所有插件、用 code --disable-extensions 启动,再逐个加回来,比瞎猜快得多。


















