vscode默认不识别bun,需手动配置launch.json并确保path可用:type设为"pwa-node",runtimeexecutable为"bun",runtimeargs含"--inspect-brk"和入口文件,同时正确设置webroot与sourcemappathoverrides以支持断点调试。

VSCode 默认不识别 bun,直接点 ▶️ 或右键“Run Code”必然失败——不是 Bun 有问题,而是 VSCode 根本没把它当运行时。必须手动配 launch.json 和确保终端能调用 bun,否则连 bun --version 都报 command not found。
VSCode 终端找不到 bun 怎么办
根本原因是 VSCode 启动时没继承 shell 的 PATH,尤其在 macOS/Linux(zsh/fish)或 Windows(PowerShell)上常见。
- 先在系统终端(非 VSCode 内置终端)执行
bun --version,确认安装成功;失败就重装:curl -fsSL https://bun.sh/install | bash - VSCode 必须从终端启动:
code .,而不是双击图标打开 - Windows PowerShell 用户若报策略错误,临时允许:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
launch.json 怎么配才能调试 bun 入口文件
不能写 "type": "bun"(VSCode 官方不支持该 type),也不能把 "program": "bun run dev" 当路径——那会被当成模块名,报 cannot find module 'bun run dev'。
- 用
"type": "pwa-node",Bun 兼容 Node.js 调试协议 -
"runtimeExecutable": "bun"(依赖 PATH,别硬编码绝对路径) -
"runtimeArgs": ["--inspect-brk", "index.ts"],端口默认是 9229,不用额外指定 - 加
"console": "integratedTerminal",方便看日志
为什么断点灰色、不命中
不是代码问题,是 sourcemap 映射断了。Bun 默认生成 sourcemap,但 VSCode 不知道浏览器加载的资源路径和你本地源码怎么对应。
-
webRoot应设为源码根目录,通常是${workspaceFolder} - 如果服务从
dist/或public/提供 HTML,webRoot就得改成对应路径 - Vite/Bun dev server 不自动映射
src/到 URL,必须加sourceMapPathOverrides:"webpack:///src/*": "${webRoot}/src/*"(即使没用 webpack) - 打开浏览器 DevTools → Sources 面板,检查能否看到
file://或http://下的src/文件夹——看不到就是映射失败
用 bun dev 启动前端服务时怎么调试
不能把 "program": "bun dev" 直接塞进 launch.json,必须拆开:用 runtimeExecutable 指向 bun,再用 runtimeArgs 传参数。
"runtimeExecutable": "bun"-
"runtimeArgs": ["dev"](不是["run", "dev"],Bun 模板如bun create生成的dev是内置命令) -
"type"仍为"node"或"pwa-node",不是"bun" - 确保项目有有效
sourceMap,且webRoot和sourceMapPathOverrides匹配构建输出路径
最容易被忽略的是 webRoot 和 sourceMapPathOverrides 的组合效果——改一个不改另一个,断点照样不生效。调试前先在浏览器 Sources 里确认能不能展开看到源码,比反复重启 VSCode 有用得多。











