VSCode调试器默认不继承终端环境变量,需启用terminal.integrated.inheritEnv为true,并在launch.json中配置"runtimeExecutable": "${env:NVM_BIN}/node"以正确使用nvm切换的Node版本。

VSCode 本身不提供“Node 运行模式切换”功能,所谓支持旧版语法,本质是换用兼容该语法的 Node.js 版本,而不是在同一个版本里开关语法开关。 比如 require('node:fs') 在 Node.js 16+ 才可用,Node.js 14 直接报错;??=(空值赋值)在 Node.js 14.5+ 才支持。你不能让 Node.js 18 “降级解析”,只能切到 Node.js 14 或 16 来跑。
终端里 node -v 对了,但 F5 调试还是旧版本?
这是最常踩的坑:VSCode 调试器(type: "node")默认不读终端环境,它启动时只查自己进程启动那一刻的 PATH,和你在终端里执行 nvm use 14.21.3 完全无关。
- 必须在项目根目录的
.vscode/launch.json中显式配置:"runtimeExecutable": "${env:NVM_BIN}/node" - 前提是
NVM_BIN环境变量真存在——在 VSCode 集成终端里运行echo $NVM_BIN,有输出才算有效 - 硬编码路径如
"runtimeExecutable": "/Users/xxx/.nvm/versions/node/v14.21.3/bin/node"看似能用,但换机器、换用户就失效 - F5 启动后,在代码里加
console.log(process.version),才是唯一验证方式
VSCode 终端不认 nvm?inheritEnv 没开或没生效
VSCode GUI 进程默认不加载你的 shell 初始化文件(比如 ~/.zshrc),所以 nvm 命令根本不存在,NVM_BIN 也为空。
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 打开 VSCode 设置(
Cmd+,),搜索terminal.integrated.inheritEnv,设为true - 改完必须完全退出 VSCode(不只是关窗口)再重开,否则继承无效
- 重启后,在集成终端里运行
which nvm和nvm current,两者都应有合理输出 - 如果仍不行,检查 shell 类型:macOS 默认是 zsh,Linux 可能是 bash,Windows 是 PowerShell,初始化逻辑位置不同
想打开项目就自动切版本?.nvmrc 不是魔法文件
.nvmrc 只是个文本声明,没人读它就等于不存在。VSCode 不原生支持自动触发 nvm use。
- 最轻量做法:在项目根目录放
.nvmrc(内容如v14.21.3),每次打开项目后手动执行一次nvm use - 省事一点:装插件
vsc-nvm,它会在新开终端时自动检测并执行nvm use(注意:已存在的终端不会自动更新,需重启) - Volta 用户注意:
.nvmrc写^14或lts会失败,必须用具体版本号或别名,且得先运行volta pin node@14.21.3生成.node-version
真正容易被忽略的是:VSCode 启动时是否加载了 nvm —— 这一步卡住,后面所有配置都白搭。别跳过 echo $NVM_BIN 和 which nvm 的验证,它们比任何文档都可靠。

















