我只安装了一次http-server,但是无论如何切换node版本,都是可以用的,但是在mac上用的时候,我按照默认版本全局安装以后,使用其他版本都是无法使用的。
原因:npm 默认的 node_cache
和 node_global
文件夹是建立在 C:\Program Files\nodejs
目录下的,所以当你使用 npm install -g http-server
这样全局安装的时候,会自动安装到 C:\Program Files\nodejs\node_global
目录下面,而没有安装到nvm目录下面的node对应的版本里面,所以全局安装的模块,不会随着node版本的切换而改变。
npm 全局安装路径查看 npm config ls
解决思路:切换node版本的时候,更改npm的 node_cache
和 node_global
的路径
解决方法:
方法一:
直接正常安装,然后把 C:\Program Files\nodejs\node_global
目录下对应的文件拷贝到 nvm 目录,对应版本的node文件夹下,例如我这里是 D:\ProgramFiles\nvm\v12.12.0
。接着把对应的node_modules
下的文件夹直接拷贝过去,然后删除 C:\Program Files\nodejs\node_global
目录下刚才拷贝过去的文件
原全局安装文件夹:
nvm的node对应版本文件夹:
方法二:
在切换node版本的时候,更换npm的全局安装目录
npm config set cache "D:\ProgramFiles\nvm\v版本号"
# 例如:npm config set prefix "D:\ProgramFiles\nvm\v12.12.0"
npm config set prefix "D:\ProgramFiles\nvm\v版本\node_cache"
# 例如:npm config set cache "D:\ProgramFiles\nvm\v12.12.0\node_cache"
然后再进行 npm install -g http-server
全局安装
切换版本:
安装全局模块:
使用测试:
以上方法,全局安装的模块就可以跟随 node 版本的改变而改变了。
如果模块可以兼容你所需要的node版本,那么直接安装就可以不用修改npm全局安装路径,如果模块有node版本区分的话,就是用如上方法安装
卸载和安装全局的模块的时候,都要记得加 -g
,否则会出错的。
还原npm安装原始目录的代码:
npm config set prefix "C:\Program Files\nodejs\node_global"
npm config set cache "C:\Program Files\nodejs\node_cache"
创作不易,且看且珍惜,转载请说明~!