根本原因是VSCode终端未继承系统PATH或shell配置:Windows需检查系统环境变量Path是否含C:\Program Files\nodejs,macOS/Linux需确认which node路径已写入~/.zshrc并彻底重启VSCode后用code .启动,验证方式为内置终端执行node -v。

node -v 在 VSCode 终端里报 command not found
这不是插件没装或设置错了,是 VSCode 根本没拿到系统里的 node 命令路径。终端(比如 Windows CMD 或 macOS Terminal)能跑 node -v,但 VSCode 内置终端(Ctrl + `)不行,说明它启动时没加载 shell 初始化文件,或者系统 PATH 没写对。
- Windows:打开「系统属性 → 高级 → 环境变量」,检查
C:\Program Files\nodejs\是否在「系统变量」的Path里;没加就手动添,或者重装 Node.js 并务必勾选 Add to PATH - macOS/Linux:运行
which node看输出(如/opt/homebrew/bin/node),确认该路径已加进~/.zshrc的export PATH="...:$PATH";改完必须彻底退出 VSCode,再从终端执行code .启动 - 验证方式:在 VSCode 内置终端里直接敲
node -v和npm -v—— 没输出就别配launch.json,后续所有调试都会失败
全局 npm 模块在 VSCode 里找不到命令(如 nodemon、express)
因为 npm install -g 默认装到系统盘(比如 C:\Users\xxx\AppData\Roaming\npm),而这个路径很可能没加进系统 Path,或者和用户变量冲突。VSCode 启动时看不到它,自然就 command not found。
- 新建两个文件夹,比如
D:\nodejs\node_global和D:\nodejs\node_cache - 以管理员身份运行 CMD,执行:
npm config set prefix "D:\nodejs\node_global"npm config set cache "D:\nodejs\node_cache" - 进系统环境变量 → 编辑
Path→ 新增一条:D:\nodejs\node_global(注意:不是子目录,就是node_global这一层) - 重启 VSCode,在内置终端运行
npm install -g nodemon,再试nodemon --version
launch.json 里断点不命中或提示 “Cannot launch program”
调试器根本找不到可执行的 JS 文件,或者源映射(source map)错位。常见于路径写死、TS/ESM 项目未适配、或用了打包工具却指向了源码。
- 单文件调试:用
"program": "${file}",别写成"${workspaceFolder}/app.js"这种固定路径 - 后端或 TS 项目:显式指定编译后的入口,比如
"program": "${workspaceFolder}/dist/server.js",不能指.ts文件 - ESM 项目:确保
package.json有"type": "module",并在配置里加"runtimeArgs": ["--experimental-specifier-resolution=node"] - 工作目录很重要:加
"cwd": "${workspaceFolder}",否则相对路径(如require('./config'))会解析失败
Code Runner 执行 JS 报乱码、卡死或 import 报错
它默认用 node $fileName,不处理编码、模块类型、输入流,尤其在中文路径、ESM 或含 process.stdin 的脚本里大概率出问题。
- Windows 中文乱码:在 VSCode 设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - ESM 报
Cannot use import statement outside a module:先确认package.json有"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" -
process.stdin假死:Code Runner 不支持交互式输入,换用内置终端手动运行,或改用 F5 调试模式(它会捕获标准输入)
真正卡住人的从来不是配置项多,而是 PATH 没生效、VSCode 启动方式不对、全局模块路径没加进环境变量这三处。尤其是 code . 启动和双击图标启动的行为差异,很多人直到重装三次 Node.js 才意识到。


















