在安装和配置Hexo的时候经常会遇到EACCES报错。这篇文章通过安装nvm来解决这个报错的问题。
避免 npm install -g 报错
相信大家在一开始使用npm的时候都会遇到一个问题。在需要-g (global全局安装)命令的时候,总是会遇到如下的报错信息:
1 | $ Error: EACCES: permission denied |
求助了一下前端的同学这个是因为npm安装的时候没有root的权限导致的。当然获取root权限我们可以有很多办法来让他成功运行(sudo,修改权限),但是因为有些包我们不能确定他完全没有恶意代码在里面,直接给予root权限也是不安全的。
npm的官方网站对EACESS的问题解决方案也是推荐使用nvm来管理,但是教程给的信息又非常简短,中间还有很多坑。下面来指导大家如何安装nvm并避免EACESS报错产生。同时nvm作为一个包管理程序可以帮助前端工程师们更加便捷的使用不同的node环境来调试程序。
准备步骤
在安装nvm的之前分两种情况:
电脑已经存在Node环境
如果电脑中已经存在了通过安装包来安装Node环境的情况下,最好先整体删除现有的node环境以免之后nvm安装后也没有效果。
Mac的用户先找到如下三个文件夹:
1 | /usr/local/include/node |
在依次删除这几个文件夹
1 | $ sudo rm -R /usr/local/include/node |
删除命令运行完毕之后可以用node -v 命令来确定node是否正确删除。报错的话就说明node环境已经从电脑中删除了。
1 | $ node -v |
如果没有删除成功,其他的删除方式可以参考这里
下载安装nvm
首先我们打开terminal输入下面两条任意一条指令:
1 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash |
1 | wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash |
这一步结束之后就可以验证是否安装成功了。输入下面的命令检测:
1 | $ command -v nvm |
如果上面成功输出nvm说明已经安装成功。
报错的话请参考官方指南。
通过nvm安装node环境
安装好nvm之后就可以安装node环境了,这里如果对环境没有特殊要求的话还是推荐安装官方的LTS版本,因为这个版本相对稳定,安装最新的版本可能会导致有些第三方的库支持不足。个人在安装Hexo的一些plugin的时候就会报错就是因为这个nodejs版本原因。
通过下面的命令可以安装想要的node版本:
1 | $ nvm ls-remote #列出所有node版本 |
到这里应该就可以正确使用npm install -g来安装第三方库了。这里可能还有别的坑,大家可以一起交流: