VSCode多工作区联合调试必须使用.code-workspace文件,直接打开两个文件夹无法启用;需通过“添加文件夹到工作区”后保存为.code-workspace,配置compound launch.json并设正确cwd、port和dependsOn,确保前后端服务真实就绪。

VSCode多工作区联合调试必须用 .code-workspace 文件
直接打开两个文件夹(比如分别用“文件 > 打开文件夹”)无法启用联合调试——VS Code 会把它们当作独立窗口处理,launch.json 只对当前活动文件夹生效。只有通过 .code-workspace 文件加载的多根工作区,才支持跨文件夹定义复合调试配置。
常见错误现象:F5 启动后只跑起前端或只跑起后端,另一侧没反应;断点灰色不可用;控制台报错 No configuration found to debug。
- 必须先用“文件 > 添加文件夹到工作区”把前后端目录都加进去,再“文件 > 将工作区另存为…”生成
.code-workspace文件 - 不要手动创建空的
.code-workspace再填内容——VS Code 不会自动识别未保存过的配置 - 路径必须是相对路径(如
"./backend"),绝对路径在团队协作中大概率失效
launch.json 里要用 compounds 启动多个服务
单个 launch.json 放在工作区根目录(即 .code-workspace 同级)下,不能放在某个子项目里。它靠 compounds 字段组合多个 configurations,而不是靠多个 launch.json。
典型错误:在 frontend/ 下放一个 launch.json,又在 backend/ 下放一个,以为能自动合并——VS Code 只读取当前工作区根下的那个。
-
configurations每一项必须有唯一name,且类型明确(如"type": "pwa-node"或"type": "pwa-chrome") -
compounds的configurations字段填的是上面定义的name字符串数组,不是对象 - 后端启动要加
"request": "launch"和正确入口(如"program": "./src/index.js"),前端调试通常用"request": "attach"连接已启动的 dev server
终端命名和自动路径切换容易被忽略
联合调试时,前后端日志混在同一个终端里根本没法看。VS Code 允许给每个任务绑定专属终端,并自动切到对应目录——但默认不开启,得手动配 tasks.json。
常见问题:改了后端代码,Ctrl+Shift+B 构建却跑到前端目录下执行 npm run build,报错找不到 package.json。
- 在
tasks.json中每个task加上"group": "build"和"presentation": { "panel": "new", "echo": true, "reveal": "always", "focus": false, "panelFocus": false } - 关键字段是
"cwd":设成"${workspaceFolder:backend}"或"${workspaceFolder:frontend}",确保命令在正确目录执行 - 终端标签名靠
"label"字段控制,比如设成"Backend Dev Server",一眼就能区分
调试器附加失败多半是端口或进程没起来
前端用 Chrome 调试器连不上,90% 是因为 npm run dev 没真正跑起来,或者端口被占。VS Code 不会等后端 ready 再启动前端调试器,得靠 dependsOn 和延迟重试机制。
典型表现:Chrome 窗口一闪而过;断点始终灰色;控制台提示 Unable to attach to process。
- 后端
configuration加"port": 9229(Node.js)并确保启动参数含--inspect=9229 - 前端
configuration加"url": "http://localhost:5173"和"webRoot": "${workspaceFolder:frontend}" - 用
dependsOn强制顺序:前端配置里写"dependsOn": ["backend"],但注意这不等于“等待后端就绪”,只是按顺序启动 - 真要等端口就绪,得配合 shell 脚本或第三方插件(如
wait-on),纯 VS Code 配置做不到
compounds 语法重要得多。


















