VSCode插件调试不生效的根本原因是未通过Extension Development Host模式启动,导致activationEvents未触发、activate函数未运行;必须确保launch.json中type为"extensionHost"、request为"launch",并在新窗口中手动执行注册命令以激活插件。

VSCode 插件调试不生效,基本可以确定是没走对启动路径——Extension Development Host 窗口没被触发,或者 activate 函数压根没运行。
为什么 F5 启动后插件没反应
常见现象:按 F5 弹出新窗口,但命令不出现、断点不命中、console.log 完全没输出。这不是代码写错了,而是 VS Code 没加载你的插件上下文。
-
launch.json中type必须是"extensionHost",不能写成"node"或"pwa-node" -
request必须是"launch",不是"attach" - 插件注册的
activationEvents(比如"onCommand:myext.doSomething")必须手动触发:在新弹出的 Extension Development Host 窗口中按Ctrl+Shift+P,输入命令名执行一次 - 确认
package.json的main字段指向正确入口文件(如./out/extension.js),且out目录已由 TypeScript 编译生成
断点灰掉(unbound)的三个原因
断点显示为灰色、无法停住,说明调试器找不到源码映射关系,和“插件没激活”是两回事。
-
tsconfig.json中sourceMap必须设为true,且编译后.js文件同级存在.js.map -
launch.json的outFiles要包含"${workspaceFolder}/out/**/*.js",否则调试器搜不到生成文件 -
out目录被.gitignore掉了?调试器可能因权限或路径不可见而失败;临时删掉.gitignore里相关行试试
怎么验证插件 API 行为是否正常
别等打包发布再试,本地调试窗口就是最真实的运行环境。
- F5 启动后,在 Extension Development Host 窗口里打开任意文件,再按
Ctrl+Shift+P输入你的命令 ID(如extension.sayHello),看是否触发 - 想验证
vscode.env.openExternal是否能跳转?直接在调试窗口中执行它,观察浏览器是否唤起(注意:调试窗口默认禁用部分安全策略,生产环境行为可能不同) - 监听
vscode.workspace.onDidChangeConfiguration?改完settings.json后,要手动执行Developer: Reload Window命令,否则首次变更不会触发监听器
最容易被忽略的是:VS Code 的 API 不是静态快照,vscode.window.withProgress 的 location 参数在 1.82+ 才支持 vscode.ProgressLocation.Notification 这类值——版本不匹配时,API 调用会静默失败,而不是报错。


















