vscode 调试 node.js 项目需确保 node 命令在内置终端可用,正确配置 node.runtimepath、launch.json 的 program 路径与 type 字段,并注意 esm、nvm、v8 inspector 兼容性问题。

VSCode 要跑 Node.js 项目,不是装几个插件就完事——node 命令必须在 VSCode 终端里能直接执行,否则所有调试、运行、插件功能都会静默失效。这是 90% 配置失败的根源,不是 VSCode 问题,是环境没到位。
node -v 在终端能跑,但在 VSCode 里报 command not found
说明 VSCode 没继承到正确的 shell 环境变量,尤其常见于 macOS/Linux 使用 zsh/fish、Windows 使用 Git Bash 或 PowerShell 的场景。
- 先在系统终端(不是 VSCode 内置终端)运行
which node,拿到真实路径,比如/usr/local/bin/node或C:\nodejs\node.exe - 打开 VSCode 设置(
Ctrl+,),搜索node.runtimePath,填入上面拿到的完整路径 - 关闭并重启 VSCode —— 仅重开终端不够,必须重启编辑器才能刷新环境上下文
- macOS 用户若用
nvm,别用全局nvm alias default,而应在项目根目录放.nvmrc并确保 VSCode 启动自终端(code .),否则 runtimePath 会错配版本
launch.json 中 program 字段总报 Cannot find module
program 不是“写个文件名就行”,它必须指向一个真实存在的、可执行的 JS 文件,且路径解析基于 ${workspaceFolder},不是当前打开的标签页。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 推荐写成
"${workspaceFolder}/src/index.js",并确认该路径下确实存在这个文件(注意大小写和扩展名) - 别用
${file}调试多文件项目——它只读当前活动文件,一旦切换标签页,program就指向了错误文件 - ESM 项目(含
"type": "module")不能直接运行.ts或未编译的.js;要么改用ts-node,要么把program指向dist/index.js,同时确保构建已执行 - 如果入口是
npm start,不要硬塞program,改用"request": "launch"+"runtimeExecutable": "npm"+"runtimeArgs": ["start"]
断点不触发或调试控制栏灰掉
断点打上却跳过,F5 按下无反应,大概率是调试配置与实际运行模式不匹配,而非代码逻辑问题。
- 检查
launch.json里的type必须是"node",不是"pwa-node"(后者用于新版 V8 Inspector,旧项目易兼容失败) -
request字段只有两个合法值:"launch"(启动新进程)和"attach"(附加到已有进程)。混用会直接禁用调试按钮 - 使用
nodemon或ts-node --watch时,别在launch.json里直接调用它们——应改用"runtimeExecutable"指向nodemon,再通过"args"传参数,否则调试器无法注入 - ESM 项目必须加
"env": {"NODE_OPTIONS": "--enable-source-maps"},否则断点映射失败,看起来像“不触发”
最常被忽略的是:VSCode 的 Node.js 调试能力完全依赖 V8 Inspector 协议,而这个协议在不同 Node.js 版本间有细微差异。LTS 版本(如 v18.x / v20.x)最稳;v21+ 的实验性特性可能让某些 launch 配置失效,遇到怪问题先降级验证。










