两种解决方法:1.安装nvm 2.修改npm全局包的安装路径。
这篇官方文章写的很清楚https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
mac下亲测加sudo是没有用的。
我采取了官方推荐的第一种方法,安装nvm。安装办法在下面这篇官方文档中可以看到。
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
安装命令、可能出现的问题在nvm的git的readme的install里有,跟着做就可以。
我个人安装时输入的命令先后为:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
touch ~/.bash_profile # 解决安装不成功问题
nvm -version # 确认安装成功
nvm安装成功后
nvm install node # 该命令默认安装node最新版本
(细节步骤这位兄弟的博客写的更清楚:https://www.cnblogs.com/zhenqichai/p/npm-eacces-permission-error-fix.html)
再次全局安装package,成功!
npm install expo-cli --global
另外:
为什么可以这么处理?
“To minimize the chance of permissions errors, you can configure npm to use a different directory”,而nvm正是对不同版本的node做了隔离。
那么是如何实现隔离的呢?(http://www.01happy.com/nodejs-nvm-use-and-principle/)
一般大抵上这种软件的实现原理都是在一个目录下存放多个版本的目录,在切换时候将相应的版本路径加入PATH中。
不光是node命令,还有npm和通过npm安装的全局依赖库都会安装到指定的版本目录中,不必担心互相影响。
比如 在不同的node版本安装的PM2是两个独立的程序,启动后也是独立的进程,完全不影响。