搭建Hexo博客过程中出现EACCES权限错误的解决方法
背景
在终端输入npm install -g hexo-cli
尝试安装 Hexo 的过程中,出现了EACCES权限错误(eacces permissions errors)。
官方文档强烈建议不要使用 root、sudo 等方法覆盖权限,我刚好没看到,用了sudo npm install -g hexo-cli
,后续又会出现无权限的问题。
这个错误是因为,你没有足够的权限在/usr/local/lib/node_modules目录下创建新的目录。可以通过下面的方法解决这个问题:
方法1:使用node版本管理工具nvm,安装Node.js和npm
注:不推荐使用Node installer,因为它会把npm安装到具有本地权限的目录中,在全局运行npm时可能会导致EACCES权限错误。我们直接使用nvm安装即可。
1. 下载和安装nvm
1.1 在终端执行:
1 | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash |
或者
1 | wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash |
也可以在github获取最新版本地址:https://github.com/nvm-sh/nvm#installing-and-updating
1.2 验证是否安装成功:
在终端输入command -v nvm
,如果输出 nvm
则说明安装成功。
2. 使用nvm安装Node.js和npm
如果之前已经用其他方法安装过node.js,无需担心,nvm 会直接覆盖安装。
2.1 在终端输入nvm ls-remote
,列出都有哪些可用版本
2.2 从中选择一个安装,例如 nvm install v18.15.0
2.3 使用安装好的版本,例如 nvm use v18.15.0
接下来就可以使用npm安装Hexo。在终端输入 npm install -g hexo-cli
即可。
参考的原文档:
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally/
方法2:使用sudo命令安装(不推荐)
hexo官方文档建议不要使用此方法,就不写了
方法3:手动更改npm的全局安装路径,将其设置为当前用户拥有写权限的目录
- 首先,在你的主目录下,创建一个全新的目录:然后,在 **
1
mkdir ~/.npm-global
~/.npmrc
**文件中配置新的路径(如果文件不存在,请创建一个):最后,将新的路径添加到你的系统环境变量中。在你的 **1
echo "prefix=~/.npm-global" >> ~/.npmrc
~/.bashrc
、~/.zshrc
**或其他 shell 配置文件中添加以下内容:保存文件后,重新加载配置文件或者重启终端:1
export PATH=~/.npm-global/bin:$PATH
或者1
source ~/.bashrc
现在,你可以尝试重新安装 hexo-cli,不再需要使用1
source ~/.zshrc
sudo
1
npm install -g hexo-cli