node -v 报“不是内部或外部命令”说明node.js未正确加入系统path,此时vscode调试必然失败;必须先在系统终端验证node -v和npm -v成功,再手动将node.exe路径及npm全局bin路径添加至系统环境变量path,并彻底重启vscode。

node -v 报“不是内部或外部命令”就别往下配了
VSCode 调试器根本不会自己装 Node.js,它只调用系统 PATH 里的 node。如果终端里连 node -v 都报错,说明 Node.js 没进系统 PATH,此时所有 VSCode 调试配置都无效。
Windows 用户常见情况:安装时勾选了 “Add to PATH”,但杀毒软件或组策略拦截了写入;或者装在含中文、空格路径(如 D:\我的软件\nodejs),导致 npm 启动脚本静默失败。
- 先在系统终端(不是 VSCode 内置终端)执行
where node,看是否返回路径;没返回就说明完全找不到 - 手动定位
node.exe,通常是C:\Program Files\nodejs\或C:\Users\{用户名}\AppData\Roaming\nvm\(若用了 nvm) - 把该路径加到「系统变量 → Path」里,不是用户变量,加完后必须彻底关闭所有 VSCode 进程(任务管理器确认
Code.exe已退出),再重开 - 验证:新开系统终端,运行
node -v和npm -v—— 两者都成功才算过关
launch.json 里 program 字段填什么才对
VSCode 调试靠 launch.json 指定入口文件,填错路径会导致断点不命中、提示 “无法启动程序” 或直接报错 Cannot find runtime 'node'。
默认生成的 "program": "${file}" 只适合单文件调试(比如 LeetCode 代码),但项目有固定入口(如 server.js 或 index.js)时,必须显式指向它。
- 打开整个项目文件夹(不是只打开单个
.js文件),再按Ctrl+Shift+P→ 输入Debug: Open Configuration→ 选Node.js → Current File - 生成的
launch.json中,把"program": "${file}"改成"program": "${workspaceFolder}/server.js"(替换成你的真实入口) - 如果项目用了 ESM(
package.json里有"type": "module"),调试时可能报错ERR_REQUIRE_ESM—— 这不是配置问题,是 Node.js 本身限制,需改用node --loader ts-node/esm或转回 CommonJS - 务必保存文件(
Ctrl+S)再按F5,VSCode 默认不自动保存未修改的文件
全局工具(如 nodemon)在 VSCode 终端里 command not found
nodemon、express 这类命令不可用,和 node 是否可用是两件事:前者依赖 npm 全局 bin 目录进 PATH,后者只依赖 node.exe 路径。
npm 默认把全局可执行文件放在 prefix 下的 node_modules/.bin 子目录,不是 prefix 本身。只加 prefix 路径进去,express --version 依然会报错。
- 终端运行
npm config get prefix,得到类似C:\Users\XXX\AppData\Roaming\npm的路径 - 把这个路径 +
\node_modules\.bin(Windows)或/node_modules/.bin(macOS/Linux)完整拼出来,加进系统 Path 变量 - 加完后同样要彻底重启 VSCode,只重启终端不够 —— VSCode 启动时读取的是那一刻的 PATH 快照
- 验证:新开终端,运行
nodemon --version或express --version
断点不触发?先看 launch.json 的 type 和 request
VSCode 自带 Node.js 调试支持,不需要装 Debugger for Node.js 这类旧插件,装了反而可能冲突。但调试行为取决于 launch.json 里两个关键字段:"type": "node" 和 "request": "launch"。
如果用了 nodemon 或其他进程管理工具,"request": "launch" 会失败,因为 VSCode 试图自己拉起进程;这时得切到 "request": "attach" 模式,让 VSCode 去 attach 已运行的进程。
- 基础调试用
"request": "launch",配合"program"指向入口文件 - 用
nodemon --inspect启动服务后,改用"request": "attach",并加上"port": 9229(默认 inspect 端口) - ESM 项目或 TypeScript 编译项目,
"type": "node"默认不启用 source map,断点会落在编译后代码上 —— 需额外配"sourceMaps": true和"outFiles",且确保构建时生成了.map文件 - VSCode 1.118 起对 AI 开发场景做了优化,但底层 Node.js 调试逻辑没变,别被新功能分散注意力










