Linux终端全局安装Vue CLI报EROFS只读文件系统错误如何解决
问题原因
你遇到的EROFS错误本质是npm尝试写入缓存目录时触发了只读文件系统限制,绝大多数此类场景是因为使用sudo执行npm命令时,修改了当前用户家目录下.npm缓存文件夹的所有者权限,导致普通读写操作被限制。
解决步骤
- 第一步:修复.npm缓存目录权限
执行以下命令将家目录下的npm缓存目录所有权改回当前登录用户:sudo chown -R $(whoami) ~/.npm - 第二步:清理已存在的不完整安装
你已经发现/usr/local/lib/node_modules下存在@vue文件夹,先卸载残留的不完整安装:
如果卸载报错,可以直接手动删除残留文件:sudo npm uninstall -g @vue/clisudo rm -rf /usr/local/lib/node_modules/@vue sudo rm -rf /usr/local/bin/vue - 第三步:(推荐)改用用户级全局安装路径,避免后续sudo权限问题
不需要root权限也可以全局安装npm包,操作如下:- 创建用户专属的全局npm包安装目录
mkdir -p ~/.npm-global- 配置npm使用该目录作为全局安装路径
npm config set prefix '~/.npm-global'- 将全局命令路径加入系统环境变量,如果你用bash shell,编辑
~/.bashrc文件,末尾新增一行:
如果你用zsh shell,就编辑export PATH=~/.npm-global/bin:$PATH~/.zshrc文件新增上述内容,保存后执行以下命令使配置生效:source ~/.bashrc # 对应zsh的话执行 source ~/.zshrc - 第四步:重新安装Vue CLI
不需要加sudo,直接执行:
安装完成后执行npm i -g @vue/clivue --version输出版本号即为安装成功。
特殊情况处理
如果执行上述操作后仍然报EROFS错误,检查你的/home分区是否被挂载为只读:
mount | grep /home
如果输出中包含ro(只读)标识,执行以下命令重新挂载为读写模式:
sudo mount -o remount,rw /home
内容的提问来源于stack exchange,提问作者Ravinder Singh
相关产品推荐
相关产品推荐

