必须先在系统终端验证 node -v 和 npm -v 能正常输出版本号,再重启 vscode 使 path 生效;launch.json 中 program 应设为 "${file}" 或匹配实际入口文件,调试 nodemon 需用 attach 模式而非直接运行。

node -v 和 npm -v 在系统终端里跑不通,VSCode 调试一定失败
VSCode 本身不带 Node.js 运行时,它只是调用你系统里装好的 node 和 npm。所以第一步不是打开 VSCode,而是关掉所有窗口,在**系统终端**(Windows 的 CMD/PowerShell、macOS/Linux 的 Terminal)里执行:
-
node -v—— 必须输出类似v20.15.0的版本号 -
npm -v—— 必须输出类似10.7.0的版本号
任一命令报 'node' 不是内部或外部命令 或 command not found,说明 PATH 没配好。LTS 安装时漏选 Add to PATH 是最常见原因;Windows 用户若装在含中文或空格路径(如 C:\Program Files (x86)\nodejs),npm 可能静默失败;macOS/Linux 用 nvm 的,要确认 source ~/.zshrc 已写入且新终端已加载。
VSCode 内置终端打不开 node?先重启 VSCode
VSCode 启动时会继承启动那一刻的 shell 环境变量。如果你刚改完 PATH 或 npm config,但没重启 VSCode,内置终端大概率还是旧环境。这不是插件问题,也不是配置问题,就是进程没刷新。
- 关掉所有 VSCode 窗口(包括托盘进程)
- 重新用文件资源管理器或 Finder 打开项目文件夹(别从旧窗口拖入)
- 再开内置终端,执行
node -v验证
如果系统终端能跑通、VSCode 终端跑不通,90% 是这一步没做。别急着搜插件或改 launch.json。
launch.json 里 program 字段写死就废了
VSCode 自动生成的 launch.json 默认是 "program": "${workspaceFolder}/app.js"。这意味着你只有叫 app.js 的文件才能 F5 调试——换 index.js、server.js 就直接报错 Cannot find file。
- 日常开发建议改成
"program": "${file}":当前打开哪个 JS 文件,就调试哪个 - 如果是 Express 入口固定,比如
bin/www,才写死为"program": "${workspaceFolder}/bin/www" - 调试前务必手动保存文件(
Ctrl+S),VSCode 默认不自动保存未改动的文件
别信网上抄来的“万能 launch.json”,program 字段必须匹配你实际想跑的文件路径。
想用 nodemon 热重载?别往 launch.json 里硬塞
VSCode 调试器不支持进程热替换。直接把 "program": "nodemon" 和 "args": ["index.js"] 塞进 launch.json,F5 会卡住或报错 spawn nodemon ENOENT。
- 正确做法:命令行先跑
nodemon --inspect-brk index.js - 然后在
launch.json里建一个attach模式配置:"type": "node"、"request": "attach"、"port": 9229 -
--inspect-brk是关键:让 nodemon 启动时暂停,等 VSCode 连上再继续
npm script 调试同理——想调试 npm start,就把 "program": "npm"、"args": ["start"]、"console": "integratedTerminal" 配上,否则看不到日志输出。
真正卡住人的从来不是 launch.json 语法,而是 node 环境没真跑起来、终端没继承新 PATH、或者 program 路径和实际文件对不上。每一步验证比盲目配插件管用得多。











