nvm切换node版本后,全局的node_modules不改变,解决方案

我只安装了一次http-server,但是无论如何切换node版本,都是可以用的,但是在mac上用的时候,我按照默认版本全局安装以后,使用其他版本都是无法使用的。
nvm切换node版本后,全局的node_modules不改变,解决方案

原因:npm 默认的 node_cachenode_global 文件夹是建立在 C:\Program Files\nodejs 目录下的,所以当你使用 npm install -g http-server 这样全局安装的时候,会自动安装到 C:\Program Files\nodejs\node_global 目录下面,而没有安装到nvm目录下面的node对应的版本里面,所以全局安装的模块,不会随着node版本的切换而改变。
nvm切换node版本后,全局的node_modules不改变,解决方案
npm 全局安装路径查看 npm config ls
nvm切换node版本后,全局的node_modules不改变,解决方案

解决思路:切换node版本的时候,更改npm的 node_cachenode_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_modules不改变,解决方案
nvm切换node版本后,全局的node_modules不改变,解决方案
nvm的node对应版本文件夹:
nvm切换node版本后,全局的node_modules不改变,解决方案
nvm切换node版本后,全局的node_modules不改变,解决方案

方法二:
在切换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 全局安装

切换版本:
nvm切换node版本后,全局的node_modules不改变,解决方案
安装全局模块:
nvm切换node版本后,全局的node_modules不改变,解决方案
使用测试:
nvm切换node版本后,全局的node_modules不改变,解决方案
以上方法,全局安装的模块就可以跟随 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"

nvm切换node版本后,全局的node_modules不改变,解决方案

创作不易,且看且珍惜,转载请说明~!

上一篇:CentOs上node环境搭建


下一篇:zsh: command not found: nvm 解决方案