npm EBADENGINE错误显示Node版本与node -v输出不一致求助
解决sudo npm i时Node版本与直接执行不一致的问题
问题原因
sudo执行命令时会切换到root环境,重置环境变量(包括PATH),因此调用的是系统默认安装的旧版Node(v12.22.9),而普通用户环境下是你自己安装的新版Node(v18.10.0),导致版本不一致。
解决方案
方案1:让sudo继承普通用户的PATH环境变量
编辑你的用户bash配置文件(比如~/.bashrc),添加以下别名:
alias sudo='sudo env PATH=$PATH'
保存后执行source ~/.bashrc使配置生效,之后再执行sudo npm i就会使用普通用户环境下的Node和npm版本。
方案2:指定Node路径执行sudo npm
先找到普通用户的Node安装路径:
which node
得到类似/home/your-user/.nvm/versions/node/v18.10.0/bin/node的路径,对应的npm路径是同目录下的npm。执行安装命令时直接指定该路径:
sudo /home/your-user/.nvm/versions/node/v18.10.0/bin/npm i
方案3:通过update-alternatives设置系统默认Node版本
- 添加新版Node到系统备选列表:
sudo update-alternatives --install /usr/bin/node node /home/your-user/.nvm/versions/node/v18.10.0/bin/node 1 sudo update-alternatives --install /usr/bin/npm npm /home/your-user/.nvm/versions/node/v18.10.0/bin/npm 1
- 选择默认版本:
sudo update-alternatives --config node sudo update-alternatives --config npm
在弹出的选项中选择对应v18.10.0的序号即可。之后无论普通用户还是sudo执行,都会使用新版Node和npm。
内容的提问来源于stack exchange,提问作者123253
相关产品推荐
相关产品推荐

