vscode本身不管理node.js版本,多版本共存需同步配置终端、调试器、任务和工作区四层环境;终端需启用login shell或注入nvm环境变量,调试器须在launch.json中设"runtimeexecutable":"${env:nvm_bin}/node",项目应配.nvmrc并手动运行nvm use,各层环境独立验证缺一不可。

VSCode 本身不管理 Node.js 版本,所有“多版本共存”效果都依赖你手动打通终端、调试器、任务和工作区四层环境;漏配任一层,node -v 和 F5 调试就对不上,npm run dev 也大概率跑错版本。
终端里 nvm 不生效?检查是不是 login shell
VSCode 集成终端默认不是 login shell,所以 ~/.zshrc 或 ~/.bash_profile 里的 source ~/.nvm/nvm.sh 根本不会执行——which nvm 返回空、echo $NVM_BIN 为空,就是这个原因。
- macOS/Linux:在 VSCode 设置中搜
terminal.integrated.inheritEnv,设为true,然后完全退出 VSCode(关窗口不算)再重开 - 或者直接编辑
settings.json,补全环境变量:"terminal.integrated.env.zsh": { "NVM_DIR": "/Users/you/.nvm", "PATH": "/Users/you/.nvm/bin:${env:PATH}" } - Windows PowerShell 用户:确保
$PROFILE里有Import-Module "$env:USERPROFILE\.nvm\nvm.ps1",且终端 profile 设为 PowerShell - 验证:新开终端后立刻运行
nvm current和which node,两者应指向nvm管理的路径
F5 调试仍用旧版 Node?launch.json 必须显式指定 runtimeExecutable
VSCode 调试器启动时只读取启动那一刻的环境快照,它完全不继承终端的 PATH 或 NVM_BIN。所以终端里 node -v 是 v18.19.0,F5 却跑 v16.20.2,非常正常。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 项目根目录下确保有
.vscode/launch.json - 必须写入
"runtimeExecutable": "${env:NVM_BIN}/node",不能省略${env:NVM_BIN}这个变量引用 - 硬编码路径如
/Users/x/.nvm/versions/node/v18.19.0/bin/node看似能用,但换机器或重装 nvm 就失效 - 前提:上一步终端已确认
$NVM_BIN非空,否则${env:NVM_BIN}展开为空,调试器会 fallback 到系统默认node
多个项目混开时,如何避免 Node 版本串?靠 .nvmrc + 工作区设置
只靠全局设置或 shell profile,无法让 frontend/ 和 backend/ 各自用不同 Node 版本——它们共享同一套终端初始化逻辑,除非你把环境加载逻辑下沉到每个项目内部。
- 在项目根目录新建
.nvmrc,内容只有一行:比如18.18.2(不要带v前缀) - 打开集成终端后,先手动运行
nvm use(它会自动读.nvmrc);也可配成 VSCode 启动任务,在tasks.json里加一个shell类型任务执行该命令 - 验证是否生效:在终端里依次运行
node -v、which node、echo $PATH,三者应指向nvm管理的路径 - 别混用
volta或fnm:.tool-versions或.node-version文件互不识别,选一个工具并坚持用到底
真正麻烦的不是配置本身,而是终端靠 shell 初始化、调试器靠 runtimeExecutable 或 nvm exec、任务靠 tasks.json 显式调用——这三层读取环境的方式彼此独立,必须逐层验证,缺一不可。










