心婼向洋 發表於 2022-8-17 01:48:00

多个Node.js版本之间切换

<div>
<div>
<p>本篇文章会讲windows和Mac系统下实现多个node.js版本之间的切换。</p>
<p>1.windows下采用nvm(nvm-window)</p>
<p>2.Mac下采用nvm和n</p>
<p>注:window和mac下的nvm地址是不一样的</p>
<p>一、windows系统</p>
<p>什么是nvm?</p>
<p>nvm是一个简单的bash脚本,它是用来管理系统中多个已存的Node.js版本</p>
<p>配置步骤</p>
<p>1.先卸载掉本系统中原有的node版本(也可以不卸载,我觉得吧还是卸载吧,以免会有冲突。反正我是卸了);</p>
<p>卸载我就不细讲了,在控制面板的程序和功能中就可以卸载掉。</p>
<p>2.去github上下载nvm安装包</p>
<p>下载地址:https://github.com/coreybutler/nvm-windows/releases</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="780" data-height="266"><img src="//upload-images.jianshu.io/upload_images/9411420-42b57209fa87bc25.png?imageMogr2/auto-orient/strip|imageView2/2/w/780/format/webp"></div>
</div>
<div class="image-caption">下载说明</div>
</div>
<p>之后就是安装了,解压双击exe文件傻瓜安装。</p>
<p>需要注意的是安装路径最好是C:\nvm,默认的路径安装成功后,在切换node版本时会有问题。</p>
<p>还有就是在安装成功后,会自动配置系统变量。这里不用管,只是知道有这么一回事就行了,以免以后修改环境变量的时候不要误操作了就好。</p>
<p>截一下图吧:</p>
<p>&nbsp;</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="512" data-height="58"><img src="//upload-images.jianshu.io/upload_images/9411420-eeb3953e01049040.png?imageMogr2/auto-orient/strip|imageView2/2/w/512/format/webp"></div>
</div>
<div class="image-caption">变量</div>
</div>
<p>NVM_HOME:nvm的安装目录</p>
<p>NVM_SYMLINK:node的安装目录</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="448" data-height="354"><img src="//upload-images.jianshu.io/upload_images/9411420-fce58fba3cb69b83.png?imageMogr2/auto-orient/strip|imageView2/2/w/448/format/webp"></div>
</div>
<div class="image-caption">环境变量:</div>
</div>
<p>对了下载完找到nvm的安装目录,打开setting.txt文件,添加上下面两个配置:</p>
<p>nvm node_mirror&nbsp;https://npm.taobao.org/mirrors/node/</p>
<p>nvm npm_mirror&nbsp;https://npm.taobao.org/mirrors/npm/</p>
<p>上截图吧</p>
<p>&nbsp;</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="504" data-height="237"><img src="//upload-images.jianshu.io/upload_images/9411420-b97662da1879727a.png?imageMogr2/auto-orient/strip|imageView2/2/w/504/format/webp"></div>
</div>
<div class="image-caption">setting配置</div>
</div>
<p>这一步可做可不做,配置的目的是将npm镜像切换到淘宝的镜像,可以提高下载速度。(就是喜欢这种快感)</p>
<p>接下来验证一下是否安装成功</p>
<p>在cmd中输入:nvm 出现下图既成功</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="605" data-height="375"><img src="//upload-images.jianshu.io/upload_images/9411420-c285df03acfe172d.png?imageMogr2/auto-orient/strip|imageView2/2/w/605/format/webp"></div>
</div>
<div class="image-caption">成功截图</div>
</div>
<p>3.安装node</p>
<p>安装node首先得知道有哪些node版本,不然肯定会报错的了(这就是废话)</p>
<p>可以在这看:https://github.com/coreybutler/nodedistro/blob/master/nodeversions.json</p>
<p>不推荐在这看,原因1.打开github网站较慢。2.这上面的版本并不是最新的</p>
<p>还可以直接使用命令查看: nvm list available</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="875" data-height="534"><img src="//upload-images.jianshu.io/upload_images/9411420-77e00cf1ee2c955d.png?imageMogr2/auto-orient/strip|imageView2/2/w/875/format/webp"></div>
</div>
<div class="image-caption">node版本列表</div>
</div>
<p>之后就使用nvm命令下载nodejs</p>
<p>(1)我以10.13.0版本为例</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="505" data-height="195"><img src="//upload-images.jianshu.io/upload_images/9411420-a9270ddfd3fd47c3.png?imageMogr2/auto-orient/strip|imageView2/2/w/505/format/webp"></div>
</div>
<div class="image-caption">npm install 10.13.0</div>
</div>
<p>(2)使用nvm use 10.13.0命令,切换node版本为10.13.0</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="282" data-height="55"><img src="//upload-images.jianshu.io/upload_images/9411420-da4344cbc297390c.png?imageMogr2/auto-orient/strip|imageView2/2/w/282/format/webp"></div>
</div>
<div class="image-caption">nvm use 10.13.0</div>
</div>
<p>注意:这点很重要,安装完后紧接着就用nuv use命令使用,不然你就是用不了这个node版本了。(这是个坑啊,MD,浪费了我一上午的时间,此处省略一万字,应了一句话饺子要吃烫烫的)</p>
<p>假如真的是切换不了这个版本了,用nvm uninstall 10.13.0卸载这个版本再重新安装即可。</p>
<p>(3)使用nvu list查看所有下载的node版本,以及当前是哪个版本(当前是10.13.0这个版本,我顺道下了9.3.0和12.13.1这两个版本)</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="427" data-height="106"><img src="//upload-images.jianshu.io/upload_images/9411420-488a1c788c875481.png?imageMogr2/auto-orient/strip|imageView2/2/w/427/format/webp"></div>
</div>
<div class="image-caption">nvu list</div>
</div>
<p>(4)运行一下node命令看一下是否成功</p>
<p>&nbsp;</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="254" data-height="55"><img src="//upload-images.jianshu.io/upload_images/9411420-42c47ede4548d81c.png?imageMogr2/auto-orient/strip|imageView2/2/w/254/format/webp"></div>
</div>
<div class="image-caption">查看node版本</div>
</div>
<p>出现这个就可以了&nbsp; 至此nvm安装成功</p>
<p>常用的一些nvm命令</p>
<p>nvm install &lt;version&gt; :该可以是node.js版本或最新稳定版本latest。(可选)指定安装32位或64位版本(默认为系统arch)。设置为all以安装32和64位版本。</p>
<p>nvm list :列出已经安装的node.js版本。可选的available,显示可下载版本的部分列表。这个命令可以简写为nvm ls 。</p>
<p>nvm uninstall &lt;version&gt;: 卸载指定版本的nodejs。</p>
<p>nvm use : 切换到使用指定的nodejs版本。可以指定32/64位。</p>
<p>还有一些其他的命令就不一一距举例了</p>
<p>&nbsp;</p>
<p>二、Mac系统</p>
<p>mac系统安装nvm和n这两个其中的一种就行</p>
<p>先来说 n</p>
<p>下面是三种安装方式(选择其中一种就行)</p>
<p>(1)如果你的mac上已经有了node,就可以直接使用npm命令安装</p>
<p>npm install -g n</p>
<p>安装后,将版本n缓存在环境变量指定的目录的node子目录n/versions中N_PREFIX,默认为/usr/local;&nbsp;而<em>主动</em>&nbsp;node版本直接安装在N_PREFIX。</p>
<p>为了避免需要sudo的n和npm全球的安装,建议您或者使用安装到你的主目录N_PREFIX,或采取系统目录的所有权:</p>
<p># make cache folder (if missing) and take ownership</p>
<p>sudo mkdir -p /usr/local/nsudo chown -R $(whoami) /usr/local/n</p>
<p># take ownership of node install destination folders</p>
<p>sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share</p>
<p>(2)如果没有node,也可以通过另一种方式安装</p>
<p>curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n</p>
<p>bash n lts</p>
<p># Now node and npm are available</p>
<p>(3)使用第三方安装</p>
<p>curl -L https://git.io/n-install | bash</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>因为我已经有了node,这里我是通过第一种方式安装的。</p>
<p>1.先来执行npm install -g n</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="914" data-height="142"><img src="//upload-images.jianshu.io/upload_images/9411420-9437493f28e778ae.png?imageMogr2/auto-orient/strip|imageView2/2/w/914/format/webp"></div>
</div>
<div class="image-caption">安装n</div>
</div>
<p>2.查看一下安装是否成功 n --version</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="770" data-height="68"><img src="//upload-images.jianshu.io/upload_images/9411420-3e29e30229cc97ed.png?imageMogr2/auto-orient/strip|imageView2/2/w/770/format/webp"></div>
</div>
<div class="image-caption">查看n的版本</div>
</div>
<p>3.直接运行n,会提示没有可以切换的node版本,虽然以前已经安装过node ,但是还是要安装一下才可以进行切换</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="878" data-height="442"><img src="//upload-images.jianshu.io/upload_images/9411420-ab9ea16bfb164203.png?imageMogr2/auto-orient/strip|imageView2/2/w/878/format/webp"></div>
</div>
<div class="image-caption">查看安装的node版本,图中表示没有安装node</div>
</div>
<p>4.安装node版本,n 10.13.0</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="956" data-height="282"><img src="//upload-images.jianshu.io/upload_images/9411420-96db73161f6d6eae.png?imageMogr2/auto-orient/strip|imageView2/2/w/956/format/webp"></div>
</div>
<div class="image-caption">安装node版本</div>
</div>
<p>如果在安装的过程中遇到Error: sudo required</p>
<p>此时使用sudo n 10.13.0即可</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="1134" data-height="230"><img src="//upload-images.jianshu.io/upload_images/9411420-c04a47191a207e95.png?imageMogr2/auto-orient/strip|imageView2/2/w/1134/format/webp"></div>
</div>
<div class="image-caption">使用sudo安装node</div>
</div>
<p>命令格式为:n node-version</p>
<p>如:n 10.13.0&nbsp; &nbsp;安装10.13.0版本</p>
<p>&nbsp; &nbsp; &nbsp; n latest&nbsp; &nbsp;安装最新的官方发布</p>
<p>&nbsp; &nbsp; &nbsp;n stable&nbsp; &nbsp;安装稳定的官方发布</p>
<p>&nbsp; &nbsp; &nbsp;n lts&nbsp; &nbsp;&nbsp;安装最新的LTS官方版本</p>
<p>我的Mac系统,所有已经安装的node版本存放路径:/usr/local/n/versions/node</p>
<p>5.切换node版本</p>
<p>先执行n&nbsp;</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="1122" data-height="194"><img src="//upload-images.jianshu.io/upload_images/9411420-67bd42943949817b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1122/format/webp"></div>
</div>
<div class="image-caption">查看已经安装的node版本,选中的为当前node版本</div>
</div>
<p>键盘上下键选择版本,之后回车切换版本</p>
<p>这时候会出现如下报错,也是无权限,解决办法有三个:</p>
<p>&nbsp;</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="1012" data-height="576"><img src="//upload-images.jianshu.io/upload_images/9411420-47307806921ad816.png?imageMogr2/auto-orient/strip|imageView2/2/w/1012/format/webp"></div>
</div>
<div class="image-caption">无权限</div>
</div>
<p>(1)直接用 sudo n,之后再选择node版本,回车就好了。</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="726" data-height="72"><img src="//upload-images.jianshu.io/upload_images/9411420-9757525445e589b1.png?imageMogr2/auto-orient/strip|imageView2/2/w/726/format/webp"></div>
</div>
<div class="image-caption">&nbsp;sudo n</div>
</div>
<p>(2)sudo su 切换至root用户,之后在用n查看版本,之后再选择node版本,回车就好了。</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="704" data-height="96"><img src="//upload-images.jianshu.io/upload_images/9411420-5bbf36f2ed90dc3d.png?imageMogr2/auto-orient/strip|imageView2/2/w/704/format/webp"></div>
</div>
<div class="image-caption">sudo su</div>
</div>
<p>(3)用sudo n 10.13.0 没错这就是安装命令,如果这个版本没有安装时,则安装这个版本,如果这个版本已经安装了,则切换的这个node版本。</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="716" data-height="102"><img src="//upload-images.jianshu.io/upload_images/9411420-e3bafbdc2f269737.png?imageMogr2/auto-orient/strip|imageView2/2/w/716/format/webp"></div>
</div>
<div class="image-caption">sudo n</div>
</div>
<p>切换完看一下这个node版本node -v</p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill">&nbsp;</div>
<div class="image-view" data-width="636" data-height="70"><img src="//upload-images.jianshu.io/upload_images/9411420-adfe592ecaf8dba3.png?imageMogr2/auto-orient/strip|imageView2/2/w/636/format/webp"></div>
</div>
<div class="image-caption">node -</div>
</div>
<p>完美,安装完成。</p>
<p>奥对了&nbsp; 如果想卸载某个node版本直接 n rm 10.13.0 就可以了(没有权限就加上sudo)</p>
<p>最后有些同学存在切换并不好使的情况,我没有遇到,但是那我也是尝试这去看以一些帖子,推荐一个吧:https://blog.csdn.net/ruffaim/article/details/83578710</p>
<p>以后我要是遇到此类问题,我会及时来更新文章的</p>
<p>&nbsp;</p>
<p>再来说说Mac下使用nvm吧</p>
<p>总体来说和window下使用nvm差不了太多</p>
<p>安装nvm还是建议先把原有node卸载,不要问我为什么,我也不知道,大几率会出问题</p>
<p>下面是卸载node命令&nbsp;</p>
<p>npm ls -g --depth=0 # 查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装</p>
<p>sudo rm -rf /usr/local/lib/node_modules # 删除全局 node_modules 目录</p>
<p>sudo rm /usr/local/bin/node # 删除 node</p>
<p>cd&nbsp; /usr/local/bin &amp;&amp; ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm # 删除全局 node 模块注册的软链</p>
<p>&nbsp;</p>
<p>之后就是在安装nvm是有些不同,直接在命令行输入下面命令</p>
<p>curl -o-&nbsp;https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh&nbsp;| bash</p>
<p>之后输入 nvm ,当看到有输出时,说明安装成功,如果说nvm没有找到command not found,说明安装失败</p>
<p>在&nbsp;.bash_profile 文件中加入以下代码,配置环境变量。</p>
<p>export NVM_DIR="$HOME/.nvm"</p>
<p>[ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; . "$NVM_DIR/nvm.sh" # This loads nvm</p>
<p>编辑完成后直接保存文件。</p>
<p>然后终端输入“source .bash_profile”,更新配置过的环境变量。</p>
<p>如果没有这个文件,可以创建一个。参考学习的文章:http://blog.sina.com.cn/s/blog_8444778b0102x68e.html</p>
<p>&nbsp;</p>
<p>至此nvm也就安装好了,具体的使用方法直接参考window下的nvm操作就好了,具体详情请看window部分</p>
<p>&nbsp;</p>
<p>常用的一些nvm 命令</p>
<p>nvm install stable //安装最新版&nbsp;</p>
<p>nodenvm install //安装指定版本的</p>
<p>nodenvm use //切换到指定版本的node</p>
<p>nvm alias default //设置默认版本</p>
</div>
<br><br>作者:从心开始_c9ba<br>链接:https://www.jianshu.com/p/7204af51fa01<br>来源:简书<br>著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。</div><br><br>
来源:https://www.cnblogs.com/wang-wen-jun/p/16593541.html
頁: [1]
查看完整版本: 多个Node.js版本之间切换