nvm use 15不生效,运行服务时node版本自动降到10是什么原因?
根因说明
nvm 是用户级别的版本管理工具,其配置的Node版本路径仅存在于当前登录用户的环境变量中。sudo 命令默认会重置环境变量,切换到root权限执行时会调用系统全局安装的Node版本,你服务器全局预置的Node版本为v10.15.1,因此会出现两个执行命令版本不一致的问题。
解决方案
- 方案一:使用nvm对应Node版本的绝对路径执行
首先执行which node获取当前使用的v15版本Node的绝对路径,示例输出为/home/yourname/.nvm/versions/node/v15.14.0/bin/node,替换路径后直接执行即可:
sudo /home/yourname/.nvm/versions/node/v15.14.0/bin/node dist/proxy.js
- 方案二:sudo执行时保留当前用户环境变量
执行命令时添加-E参数继承当前用户的PATH配置:
sudo -E node dist/proxy.js
注意该方案可能受系统sudoers安全配置限制,部分服务器会禁止sudo继承用户环境变量。
- 方案三:避免使用sudo启动服务
如果你的代理服务监听的端口大于1024(非系统特权端口),无需root权限即可启动,直接执行node dist/proxy.js就会调用nvm切换的v15版本。 - 方案四:给root用户配置对应版本的Node
切换到root用户后安装nvm并切换到v15版本,后续sudo执行时就会默认使用对应版本。
内容的提问来源于stack exchange,提问作者see sharper
相关产品推荐
相关产品推荐

