launch.json配置不生效,首要确认type与request是否匹配:type必须为"pwa-node"等当前有效值,request严格区分launch(配program)和attach(配port),二者错配将导致调试失败。

launch.json 配置不生效?先确认 type 和 request 是否匹配
VSCode 调试 JavaScript 失效,80% 情况下不是插件问题,而是 launch.json 里 type 和 request 搭配错误。比如用 "type": "node" 却配了 "request": "attach",但没开调试端口,断点就永远灰着。
-
"type": "pwa-node"是当前推荐值(取代旧的"node"),兼容性更好,支持 ES modules 和 Worker 线程 -
"request": "launch"用于启动新进程;"request": "attach"必须配合node --inspect或已运行的进程,且需明确指定"port" -
"program"值必须是相对路径或变量表达式(如"${workspaceFolder}/src/index.js"),不能写死绝对路径,否则跨机器失效 - 如果项目用 ESM,加
"runtimeArgs": ["--loader", "ts-node/esm"](需装ts-node)或改用"type": "pwa-node"+"runtimeVersion": "20.15.0"显式声明 Node 版本
debugger 语句不中断?检查 auto attach 模式与进程启动方式
写了 debugger; 却没停住,大概率是 VSCode 没“看到”这个进程——auto attach 默认关闭,且只对特定启动方式响应。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 必须在命令面板中运行
Debug: Toggle Auto Attach,并选Only With Debugger Statement(不是Always,后者会干扰 npm scripts) - 终端中要直接执行
node index.js,不能通过npx tsx index.ts或pnpm run dev启动,除非这些命令底层透传了--inspect - 若用
nodemon,得加--inspect参数:nodemon --inspect index.js,否则子进程不会被自动附加 - Mac 上 Chrome 启动带调试端口时,命令是
open -a "Google Chrome" --args --remote-debugging-port=9222,少个--args就无效
子进程/Worker 断点失效?autoAttachChildProcesses 不是万能开关
vscode-js-debug 支持子进程调试,但光靠 "autoAttachChildProcesses": true 不够——它只对 child_process.fork() 和显式 new Worker() 生效,对 exec()、spawn() 或第三方库封装的进程无效。
- Node.js 的
Worker线程默认可调试,但需确保主模块和 Worker 文件都未被混淆,且workerData传参不要过大(否则序列化失败导致加载卡住) - 如果用
cluster模块,每个 worker 是独立进程,必须在fork前加execArgv: ['--inspect=0.0.0.0:9229'],再在launch.json中配置"port": 9229并设"address": "0.0.0.0" - Webpack Dev Server 启动的子进程(如 HMR)不走标准 fork 流程,此时应改用
"request": "attach"+ 手动查ps aux | grep inspect找真实端口
第三方库方法链无补全?jsconfig.json 比插件数量重要十倍
装了十几个补全插件却连 lodash.map() 都不提示,根源往往不在插件,而在 jsconfig.json 没告诉语言服务“哪些类型该参与推断”。
- 最简有效配置必须含
"compilerOptions": {"baseUrl": ".", "paths": {}},空paths也比没有强——否则模块解析退化为 Node.js 默认规则,别名路径全失效 - 用了 Webpack 别名(如
@/utils),jsconfig.json的paths必须和resolve.alias完全一致,包括尾部/*("@/*": ["src/*"]不等于"@/": ["src/"]) - 想让
@types/lodash自动生效,除了安装包,还要在jsconfig.json加"typeAcquisition": {"enable": true, "include": ["lodash"]};若仍不提示,检查node_modules/@types/lodash是否真实存在(pnpm 用户常因硬链接缺失而为空目录) -
require('lodash')写法不会触发类型获取,必须用import _ from 'lodash'或至少有/// <reference types="lodash"></reference>注释
launch.json 错一个字段,jsconfig.json 少一行 enable,auto attach 模式选错选项,都会导致现象看似相同(断点不触发 / 补全不出现),但根因完全不同。容易被忽略的是——这些配置之间存在隐式耦合,改一处常要同步验其他。Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










