
今天遇到一个问题,记录一下!
当我用brew
安装Node.js
和npm
时,出现了报错,npm
和node
版本不匹配,如下图报错:

经过一番查找,貌似是官方不推荐使用
Homebrew
来管理node
,现在都使用nvm
来管理node
,那就换管理工具吧。😓
先来简单了解nvm,node,npm之间的关系。
- nvm:node 版本管理工具。
也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本。 - node.js:在项目开发时的所需要的工具库
- npm:node 包管理工具。
在安装的 node 的时候,npm 也会跟着一起安装,它是包管理工具。
npm 管理 node 中的第三方插件。
nvm 安装(这里也不能用brew来安装nvm,需要如下安装方式)
安装命令:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
或者Wget:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
后面的“v0.33.8”这是nvm的版本号,可以自行查看,安装最新版本。详见:https://github.com/creationix/nvm/blob/master/README.md
命令执行完成后,nvm就安装在~/.nvm下了。
输入nvm
或nvm help
命令,就可以看到关于nvm的一些信息。
当出现Node Version Manager
时,说明已安装成功。
环境变量,执行安装命令的时候会自动配好,已经不用手动配置了。
nvm 常用命令:(根据以下命令,就可以随意安装node
和npm
)
nvm install stable ## 安装最新稳定版 node)
nvm install <version> ## 安装指定版本,可模糊安装,如:安装v4.4.0,既可nvm install v4.4.0,又可nvm install 4.4
nvm uninstall <version> ## 删除已安装的指定版本,语法与install类似
nvm use <version> ## 切换使用指定的版本node
nvm ls ## 列出所有安装的版本
nvm ls-remote ## 列出所有远程服务器的版本(官方node version list)
nvm current ## 显示当前的版本
nvm alias <name> <version> ## 给不同的版本号添加别名
nvm unalias <name> ## 删除已定义的别名
nvm reinstall-packages <version> ## 在当前版本 node 环境下,重新全局安装指定版本号的 npm 包
安装完成后,分别查看node和npm版本
node -v
nom -v
可以查看node和npm版本对照表,确认版本是否匹配。
通过上面的操作,就可以解决npm
和node
版本不匹配了。
注意⚠️:这里说一下,会遇到了一个新问题,Mac系统默认curl不支持https,所以安装nvm的命令时,有可能会不成功,出现如下错误信息:
curl: (1) Protocol "https" not supported or disabled in libcurl
curl是利用URL语法在命令行方式下工作的开源文件传输工具。Mac系统默认安装不支持https协议。
这个问题很头疼,之前就遇到一次。尝试安装openssh,也没安装成功。这次找到一个方法,终于安装成功了。
解决方法
- 首先,点击curl-7.65.3下载安装包或者前往
http://curl.haxx.se/
下载最新版本。 - 接下来cd进入解压后的文件目录,执行一下命令。
sudo ./configure --with-darwinssl
# 编译
make
# 安装
make install
其中./configure
功能是编译
--with-darwinssl
功能是支持https
make
和 make install
是编译安装
接下来,验证成果如何
输入curl -V
命令,看到有https
,说明成功了,已经支持https协议了。如下面所示:

感谢大神们的参考文章,帮助我解决问题!
参考文档链接:
mac/linux让curl支持https(ssl)
网友评论