当前位置: 首页 > 后端技术 > Node.js

基于nvm的Node和NPM的版本管理(NPM权限错误解决方法)

时间:2023-04-03 22:55:46 Node.js

最近在使用npm的过程中,发现全局安装总会遇到权限相关的错误,所以总是在前面加上sudo,以及我必须停止输入您的密码。懒惰让我进步,我google了一下相关问题的解决方法,发现npm在官方文档中已经说明了HowtoPreventPermissionsErrors。根据其描述,根本原因是Node.js安装包将程序安装到了一个只有本地权限的地址(写入需要管理员权限)。并且提供了两种修复方法,推荐的方法是本文要讲的nvm方法。nvm的优点nvm(NodeVersionManager)主要通过node和npm的集中版本管理解决了两个问题,统一解决了node和npm的版本管理问题。nvm为我们提供了一种非常方便的机制,可以在同一个终端上安装多个版本的node和npm,提供了快速切换版本的能力,这为我们检测项目兼容性和定位bug提供了很大的帮助。解决了本文开头提到的各种权限相关的问题,从此全局安装再也不用重复输入sudo了。nvm的使用这里简单介绍下nvm在macOS下的安装和使用(注意,nvm主要针对macos和linux用户,使用windows的客官请看这里)安装前在安装前,首先要考虑是否要保留原系统安装节点。nvm可以保留原来的节点进行安装,也提供了切换回系统节点的方式。但是注意:如果系统中有多个用户,当前安装的nvm只为你一个。如果其他用户没有安装,只能使用系统安装的node版本。全局安装的node模块地址不同(/usr/local/lib/node_modules/*VS~/.nvm/versions/node/vX.X.X/lib/node_modules/*)。在一定程度上存在版本不一致的风险。如果选择卸载原来的系统节点,这里有一篇很实用的文章讲解安装方法比较简单,执行以下脚本即可。该脚本克隆项目代码并设置环境变量。如果有问题,可以查看github上的troubleshooting。curl-o-https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh|bash安装完成后,关闭终端并重新打开一个新终端,输入以下命令验证安装。command-vnvm#shouldreturnnvm注意:您可以使用相同的脚本来自动更新nvm安装后,使用起来非常简单快捷。以下是一些常用的功能1、安装某个版本的nodenvminstallnvminstall--lts#安装最新的lts版本nodenvminstallnode#安装最新版本的nodenvminstall6.14.4#安装node6.14.42版本。列出所有节点版本nvmls#本机所有版本nvmls-remote#远程所有版本3.切换并使用某个版本的nodenvmusenvmuse--lts#使用最新的lts版本的nodenvmusenode#使用最新版本的nodenvmuse6.14.4#使用node版本6.14.44。启动nodenvmrunnvmrun--lts#启动最新的lts版本nodenvmrunnode#启动最新版本的nodenvmrun6.14.4#启动nodeversion6.14.45.使用某个版本执行nvmexec4.2node--版本6。查询某个版本nvm的安装位置which5.0node,--lts是nvm自动维护的别称,表示最新版本和最新的长期支持版本。另外,system也是另外一个名字,表示非nvm安装系统版本的node可以使用--reinstall-packages-from=node为已有的node模块在新的node中自动安装上一版本的已有node模块nvminstallnode--reinstall-packages-from=node#从之前的版本继承nvminstall6--reinstall-packages-from=5#从某个版本继承镜像的神奇之处在于nvmwindows非常提供命令行设置贴心的镜像命令,但是mvn没有,只好自己动手了。nvmnode安装镜像1手动解决,每次执行nvm安装时,执行exportNVM_NODEJS_ORG_MIRROR=https://nodejs.org/distnvminstallnode2永久解决,当然把export放到~/.bashrc中安装npm镜像npminstall速度也令人印象深刻。所以安装node后,npm镜像一般都会设置为淘宝。npmconfigsetregistryhttps://registry.npm.taobao.org注意:请不要使用cnpm,它与npm基本相同,但经常会出现意想不到的错误。手动卸载nvm,但并不复杂。首先,删除nvm文件$rm-rf"$NVM_DIR"然后,修复环境变量,修改~/.bashrc(如果没有,去bash_profile中找),删除下面几行exportNVM_DIR="$HOME/.nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"#这会加载nvm[[-r$NVM_DIR/bash_completion]]&&\.$NVM_DIR/bash_completion完成。综上所述,mvn提供了一种管理Node.js版本的便捷方式。无论是安装、切换还是删除,都可以一步完成。无疑是现阶段的首选。