vscode本身不提供node.js运行环境,必须安装系统级node.js并确保path正确配置;终端中node -v成功但vscode报错,根本原因是vscode未继承shell或系统path,需通过终端启动code .(macos/linux)或重装node时勾选“add to path”(windows)解决,并在vscode内置终端验证。

VSCode 本身不管理 Node 环境,也不处理全局依赖——它只调用你系统里已有的 node 和 npm。配置失败,90% 是因为系统级 Node 没装好或 PATH 没生效,不是 VSCode 设置问题。
node -v 在终端报错,VSCode 就不可能跑起来
别急着改 launch.json 或装插件。先打开系统终端(macOS/Linux 用 Terminal,Windows 用 CMD/PowerShell,**不是 VSCode 里的集成终端**),执行:
-
node -v和npm -v必须都输出版本号 - Windows 用户:安装时没勾选 Add to PATH 就等于没装;路径含空格或中文(如
C:\Program Files\nodejs)也会导致命令不可见 - macOS/Linux 用户:强烈建议用
nvm安装,执行nvm install --lts && nvm use --lts,再验证which node输出是否合理 - 改完环境变量后,必须彻底关闭并重启 VSCode——它启动时只读一次 PATH,不会自动刷新
全局依赖(如 nodemon、typescript)要装在系统级,不是项目里
全局安装的包是给整个系统用的,VSCode 调试器、终端、甚至其他编辑器都会用到它。但要注意:
- 用
npm install -g nodemon,不是npm install nodemon(后者装进当前项目node_modules,VSCode 终端里还是找不到nodemon命令) - Windows 上用管理员权限 CMD / PowerShell 才能成功全局安装;macOS/Linux 若提示
EACCES,说明 npm 默认路径权限不对,别用sudo,改用nvm或按 npm 官方方式重置 prefix - VSCode 内置终端能否运行
nodemon app.js,直接取决于系统终端能不能运行——如果系统终端可以,VSCode 里却不行,大概率是它继承了错误 shell(比如 zsh 配置了别名但 bash 没配),关掉终端再 Ctrl+` 重开试试
launch.json 里想用全局工具(比如 nodemon),得显式指定 runtimeExecutable
VSCode 默认调试器只认 node,不认 nodemon。如果硬要在 launch.json 里跑热更新,不能只改 program,而要换执行器:
- 不要写
"runtimeExecutable": "nodemon"—— 这会失败,因为 VSCode 不会从 PATH 查找可执行文件 - 正确做法:用
which nodemon(macOS/Linux)或where nodemon(Windows)拿到绝对路径,填进配置,例如:"runtimeExecutable": "/usr/local/bin/nodemon" - 同时必须配
"args"字段传入口文件,比如:"args": ["${workspaceFolder}/app.js"],否则nodemon启动后没目标可监听 - 更稳妥的做法其实是:不用调试器跑
nodemon,而是用 VSCode 的tasks.json启动,调试时仍用原生node,避免源码映射和断点失效
VSCode 里看到 import 报红,和全局依赖无关
全局装了 typescript 或 @types/node,不代表当前项目就能识别类型。报红通常是因为:
-
npm install没在项目根目录执行,或者用了npm i缩写(某些旧版 npm 对缩写支持不稳定) - 项目有
jsconfig.json或tsconfig.json,但没启用"typeRoots"或漏写了"types": ["node"] - 你全局装了
typescript,但项目里没装@types/node—— 类型定义必须装在项目本地,全局装的tsc命令不管类型解析 - ESM 项目里用
require()加载 CommonJS 包,TS 会报类型冲突,优先改用import,或确保package.json有"type": "module"
真正容易被忽略的是:VSCode 不会自动感知 node_modules 变更。npm install 或 update 后,IntelliSense 和调试器仍按旧缓存工作——必须重启 VSCode,不只是 Reload Window。











