兩種解決方法: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是兩個獨立的程序,啓動後也是獨立的進程,完全不影響。