修复npm安装全局模块权限问题

参考:

https://blog.csdn.net/gentlycare/article/details/51279529
https://www.jianshu.com/p/976810138d35

一、问题:

在使用 npm 命令安装相关的模块时,会出现如下的提示:

1
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

权限问题提示

出现此问题的原因是: npm 的安装权限不足,文件没有root权限,即 npm 的安装目录 /usr/local/lib/node_modules (一般都在这个目录下,除非你自己手动修改过默认的安装路径)

二、解决:

有三个方式可以解决该问题:

  • 修改全局(默认)安装路径的权限(推荐)
  • 修改默认安装路径,避免安装权限不足
  • 借助第三方工具安装node

1、修改安装路径的权限

1.1、首先查看默认全局安装路径

1
npm config get prefix

对于大多数系统显示目录为:/usr/local

警告:如果默认路径是在 /usr/ 请跳过 修改路径权限 这步骤,否则你会搞乱系统权限。

1.2、修改路径权限

1
sudo chown -R $USER /usr/local/{lib/node_modules,bin,share}

执行完毕将会把 /usr/local 下的 lib/node_modulesbinshare 所有权更改为当前用户,即拥有root权限,即可进行安装。

2、修改默认全局安装路径

当你不想修改默认安装路径的权限,因为由此可能会带来一些额外问题,譬如说,修改权限后无法跟当前系统其他用户共享。这个时候可以考虑修改默认的安装路径。

在示例下,我把默认全局安装路径修改到当前用户的home目录下面:

2.1、新建一个全局安装的路径

1
mkdir ~/.npm-global

2.2、配置npm使用新的路径

1
2
//注,此处单引号中的路径可随意,也可以不加 ~/ ,即会在用户路径下新建
npm config set prefix '~/.npm-global'

2.3、打开或者新建用户路径下的 .bash_profile,加入下面一行

1
source .bash_profile

可以尝试着安装一个全局包,应该就可以成功了。

3、借助第三方工具安装node

3.1、mac系统借助brew安装node

1
brew install node

3.2、centos借助yum工具安装node

1
yum install node
-------------我是有底线的-------------