[技术分享]nrm 和 nvm 下 npm 失效

zjscy666发布于7 个月前 • 408 次阅读

前言


最近小编心血来潮,想着试试nrm和nvm,来切换和管理不同的node版本和npm下载镜像源。

nrm


先来接简单说下nrm,这个其实是切换不同镜像源用的,大家只要按照文档下载按照,记住以下命令即可。

nrm ls 显示镜像源
nrm use cnpm 切换镜像源
npm i 对应切换的镜像源下载

再来个快速删除node_modules的命令,如何卡顿,建议退出当前文件夹,然后重新打开

rimraf node_modules 在目录下快速删除node_modules

nvm


nvm是一个管理安装node不同版本的控制器,你可以下载,切换不同版本的node,这个工具很有用,具体大家按照文档下载可以,记住以下命令就好了。

nvm ls 查看现在的node版本
nvm install 8.12.0 下载对应的版本
nvm use 8.12.0 切换到8.12.0

有一点要注意,如果你的系统是win,那么需要到github上下载最新版本的nvm-windows,如果不会使用github搜索下载,请出门右转google,谢谢!

安装nrm和nvm后npm路径出现问题


这个问题引起的原因有很多,简单说下,可能是你安装nvm不是最新版本,可能你安装的时候本地的node和npm没有卸载干净,有残留。总之,出现的效果就是在cmd中,node -v可以出现node版本, npm -v 直接报错,说npm不是全局命令。

上述问题的解决方案


解决方案有两个,第一个是最简单的,把node, npm, nrm, nvm全部卸载干净,保证没有残留,然后重新安装nrm,nvm即可。 第二个方案是全局手动安装npm即可,这个方案对于不想大动自己系统配置的童鞋来说,是最好的。

全局手动安装npm


  • github下载一个npm包,地址如下https://github.com/npm/npm/releases,记住下载的必须是稳定版本,或者最新版本,不要下载pre这类不稳定的版本。
  • 在node目录下,创建node_modules\npm,然后把下载的npm包解压。
  • 拷贝 node_modules\npm\bin 下面的 npm 或者 npm.cmd (依照操作系统) 到 node.exe 同目录下。 到这一步还没有万事大吉,因为nvm可以生成和修改NODE_PATH路径,但是也只能在管理员命令行窗口可用,你要想在自己的用户窗口可用,你必须在用户变量的path上配上%NODE_PATH%,完事!当然如果系统有轻微差异,在系统变量的path上也配上%NODE_PATH%。然后随便打开命令行,输入npm -v,就会出现对应的版本号。

后记


还有几点要注意的

  • nvm一般在AppData\Roaming\nvm,除非你修改过。
  • npm中全局包和cache包的路径问题,为了让脚手架能用,建议npm中这两个包维持原处,为了让你原来的全局包能用上,不至于重新下载,这样做还有个好处,可以让你的编辑器(例如vscode)的终端用原来的,而不是重新配置编辑器的路径等参数。
npm config set cache=C....\AppData\Roaming\npm-cache
npm config set prefix=C....\AppData\Roaming\npm-global
  • 如果你坚持要把npm-cache和npm-global迁移,那么最好在用户变量中path配上C:…\AppData\Roaming\nvm\v8.12.0\npm-global,记住下面必须有.cmd脚手架文件,这样才可以全局调用。
  • 最后说下nvm原理,nvm修改和配置全局node变量,并找到node同目录下的npm,所以通过配置环境变量,可以全局和用户中使用node和npm,npm通过配置global文件位置,在系统和用户中path上配置变量,可以直接调用全局npm包命令。
共收到 0 条回复