学习react框架,macOS下安装脚手架create-react-app时出错
pre:执行安装命令,报错
在终端里输入命令:
npm install -g create-react-app
开始出现报错:
看报错提示,应该是没有存取权限访问目录:/usr/local/lib/node_modules,马上进入到该目录的父目录下:
cd /usr/local/lib
查询当前用户对目录node_modules的操作权限:
ls -l
发现该目录的权限为: drwxr-xr-x,如下图:
d代表目录文件
( 文件类型有 -:普通文件,d:目录文件,l:链接文件,b:设备文件,c:字符设备文件,p:管道文件 )
r代表read读, w代表write写, x代表execute执行,三组权限字位置分别代表:文件所有者、文件所属组、其他用户。
三组从左到右排列,每组三位r w x,如果为 - 则表示这一位的权限不存在。
由此可知,目录node_modules的权限是:文件所有者是root,可以读写执行;文件所属组是wheel,它其他用户只能读和执行,不能写入数据。而安装脚手架是需要写入数据的,那么有两种解决办法:
- 使用root用户安装脚手架;
- 给其他用户赋权;
- 将该目录的所有内容授权给当前用户。
一、尝试第一种方法,使用root用户安装
切换为root用户:
sudo -i
按提示输入密码后切换为root用户:
提示:切换为root用户时需要输入密码,密码即为macbook的锁屏密码,可以在设置中进行修改。
继续按原来安装脚手架的命令执行安装:
npm install -g create-react-app
提示安装成功,问题解决:
二、尝试第二种方法,把写权限赋给所有用户后进行安装
先在root用户下将已安装的脚手架进行卸载:
npm uninstall -g create-react-app
卸载成功:
然后再把该目录 /usr/local/lib/node_modules的写权限赋给所有用户:
chmod a+w /usr/local/lib/node_modules
赋权成功:
退出root用户,按照上面方法进行脚手架的安装:
exit
npm install -g create-react-app
安装成功:
尝试第三种方法,将目录内容授权给当前用户
先要切换到root用户,再进行授权,因为该目录 /usr/local/lib/node_modules 的所有者是root用户:
sudo -i
chown -R mac /usr/local/lib/node_modules
授权成功:
可以看到,该目录的所有者已经变为当前用户mac了。再继续进行安装,因为文件拥有者默认是有写入权限的,所以安装肯定是会成功的,就不再展示了。
值得一提的是,如果对系统安全性要求比较高,可以在尝试完所有方法,安装好之后,将目录*/usr/local/lib/node_modules*的写入权限限制为仅文件拥有者所有:
chmod go-w /usr/local/lib/node_modules
查看验证,修改成功:
综上所述,安装脚手架出错的症结在于 当前用户 对目录的权限不足导致的,修改用户对目录的写入权限即可。