React native expo-cli permission denied リアクトインストール出来ない権限問題 EACCES mac

流行りのReact nativeを勉強してみようと思ったのでインストール npm install -g expo-cli

Result:

ERR! sharp EACCES: permission denied, mkdir '/Users/***/.npm/_libvips'
info sharp Attempting to build from source via node-gyp but this may fail due to the above error
info sharp Please see https://sharp.pixelplumbing.com/page/install for required dependencies
gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/JP23136/.node-gyp/10.16.0"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/expo-cli/node_modules/sharp/.node-gyp"
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/expo-cli/node_modules/sharp/.node-gyp'
gyp ERR! System Darwin 18.5.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/expo-cli/node_modules/sharp
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sharp@0.22.1 install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sharp@0.22.1 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

なんと初手から失敗

EACCESパーミッション問題はどうやらNodeのパッケージをglobalにインストールしようとすると起こるらしい。 解決方法としては二つ!

  • npmをアンインストールして、node version manager(nvm)でインストールし直す
    • 推奨されているらしい
    • が試していないので省略
    • アンインストールはだるい
  • npmのデフォルトディレクトリを手動で変える
    • コマンドを打つだけなので楽

私は二番目の方法で解決したので記録

  1. global インストール用のディレクトリを作る
 mkdir ~/.npm-global
  1. npmのディフォルトディレクトリをセット
 npm config set prefix '~/.npm-global'
  1. 空のファイルを作る
// 私はvimでそのまま保存。エディタはご自由に
vi ~/.profile
  1. 環境変数を変える
export PATH=~/.npm-global/bin:$PATH
source ~/.profile

今度はインストール出来るはず!

npm install -g expo-cli

無事成功