解决Mac下npm权限问题
前言
在学习Vue-CLI3的时候使用了全局安装,提示安装失败,本以为是npm版本问题,在更新npm的过程中又出现了 npm ERR! code: 'EACCES' ,查了一下发现是权限问题。
看到权限不足第一反应就是使用 sudo, sudo 确实能解决一些权限问题,但却不是最好的解决方案。
正文
官方给出两种方法 :
使用node版本管理器重新下载npm(Reinstall npm with a node version manager)
或者
手动修改npm的默认目录(Manually change npm’s default directory)
------------------------------------分割线------------------------------------
先说第一种方法,我这里是用的是 nvm。

安装命令:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
or Wget:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
安装好会提示重新启动终端,重启之后输入 nvm --version , 显示版本号则说明安装成功。
如果显示 command not found: nvm 可能是nvm没安装好,还有可能是缺少 .bash_profile 文件。

在home目录创建 .bash_profile 文件 (cd ~ , touch .bash_profile),写入
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
保存以后重新运行安装命令,安装后重启终端即可。 我运行 npm install -g @vue/cli 可以下载了。
第二种方法,手动修改npm的默认目录(具有读写权限的目录),如下
1.创建全局目录
mkdir ~/.npm-global
2.配置npm使用新路径
npm config set prefix '~/.npm-global'
3.打开或创建一个~/.profile文件并添加以下代码
export PATH=~/.npm-global/bin:$PATH
4.在命令行上,更新系统变量
source ~/.profile
5.测试新配置,不用sudo全局下载安装包
npm install -g jshint
不想使用 2-4,还可以使用相应的环境变量(例如,你不想修改~/.profile)来实现
NPM_CONFIG_PREFIX=~/.npm-global
参考资料:
Resolving EACCES permissions errors when installing packages globally
Downloading and installing Node.js and npm
以上。
解决Mac下npm权限问题的更多相关文章
- 解决Mac下Sequel Pro 1.1 连接 Homebrew安装Mysql5.7.8的问题 Sequel Pro 1.1 encountered an unexpected error
解决Mac下Sequel Pro 1.1 连接 Homebrew安装Mysql5.7.8的问题 Sequel Pro encountered an unexpected error Sequel Pr ...
- 解决mac下安装yeoman时没有权限问题
在mac下安装yeoman经常会出现如下图错误: 解决办法:在命令行执行-- sudo chown -R $USER /usr/local/lib/node_modules 回车就OK
- 解决Mac下SublimeLinter的Unsafe Characters警告
Mac下编辑JS文件, 如果是中文字符的行会警告: This character may get silently deleted by one or more browsers. SublimeLi ...
- mac下npm/node的安装和卸载、升级;node、npm升级后最后删掉node_modules重新安装
mac还是使用brew install简单一些:最好使用一种安装方式,不要多种方式互用: 更新npm到最新版本npm install -g npm更新npm到指定版本 npm -g install n ...
- 解决Mac下AndroidStudio内容时卡顿
Mac下AndroidStudio在写代码的时候出现卡顿,小圆圈会一直转,此时我们应该检查下AndroidStudio的内存使用情况了. 1.点击左上角 AndroidStudio -- Prefer ...
- 解决Mac下idea运行速度慢
刚入手Mac,发现Mac下使用idea进行调试极其慢,然后发现和本地回环地址有关: 只需稍微修改hosts文件即可: sudo vim /etc/hosts,在localhost后面追加你的电脑名.l ...
- 解决MAC下ctags -R无效的问题
MAC下自带了ctags,与我们常用的是不同的. 我们需要去重新下载一个ctags并重新安装 1.去http://ctags.sourceforge.net/下载Ctags的最新版本源代码 2.tar ...
- 解决Mac下sed命令报错的问题
在Mac上准备批量替换一些文字,使用sed命令,如下: sed -i 's/xxx/yyy/g' file 同样的命令在Linux上是可以成功运行的,注意Mac下man sed中-i参数的说明: 原来 ...
- Mac下没有权限启动tomcat的解决办法
问题描述 在Mac中通过./startup.sh执行启动脚本文件,启动tomcat时报如下错误: -bash: ./startup.sh: Permission denied 解决方法 错误信息说明了 ...
随机推荐
- 20155319 2016-2017-2 《Java程序设计》第四周学习总结
20155319 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 ==继承== 6.1.1 继承共同行为 定义:继承基本上就是避免多个类间重复定义共同行为. ...
- wpf- DataGrid 常用属性和事件
组件所在命名空间: System.Windows.Controls 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. Col ...
- KVM克隆CentOS6虚拟机后无法启动
启动网卡报如下错误: Bringing up interface eth0: Device eth0 does not seem to be present,delaying initializati ...
- 修改索引名称(mysql)
MySQL修改索引名称. 对于MySQL 5.7及以上版本,可以执行以下命令: ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_inde ...
- HTML基本代码教学,第二天
HTML 咱们今天来看一下咱们这HTML能做些什么,例如下图(最低级的小实验) 咱们来看一下图片的最左上角<head> <title></ title></ ...
- C#反射的简单示例
反射(Reflection)可以在运行时获 得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的名称.限定符和参数等反正说白了就 ...
- ABP 框架集成EF批量增加、删除、修改只针对使用mmsql的
AppService 层使用nuget 添加 EFCore.BulkExtensions 引用 using Abp.Application.Services.Dto; using Abp.Domain ...
- 《More Effective C++》读书笔记(零)Basic 基础条款
这是篇读书笔记,只记录自己的理解和总结,一般情况不对其举例子具体说明,因为那正是书本身做的事情,我的笔记作为梳理和复习之用,划重点.我推荐学C++的人都好好读一遍Effective C++ 系列,真是 ...
- 1035 Password (20 分)(字符串)
注意下单复数 #include<bits/stdc++.h> using namespace std; pair<string,string>pa; int main() { ...
- java引用Arcface,实现人脸识别(demo)
## 开发环境准备: ###开发使用到的软件和工具: * Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).li ...