npmでpermission deniedになった時の対処法[mac]
この記事について
npmを利用してinstallしたりupgradeしたりする際にpermission deniedと表示されてしまった時に助けになるかもしれない記事です
現象
npmコマンドを実行したところ以下のようなエラーが出てしまう
npm ERR! Darwin 15.5.0 npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "update" "-g" npm ERR! node v5.6.0 npm ERR! npm v3.7.1 npm ERR! path /usr/local/lib/node_modules/npm/node_modules/aproba npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall access npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/aproba' npm ERR! at Error (native) npm ERR! { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/aproba'] npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'access', npm ERR! path: '/usr/local/lib/node_modules/npm/node_modules/aproba' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! Please include the following file with any support request: npm ERR! /Users/<アカウント名>/works/github/npm-debug.log
原因
不明・・・
対策
npm公式HPにありました。
対策1:npmのデフォルトディレクトリの権限を変更する
- npmディレクトリのパスを確認する
npm config get prefix
を実行するとおそらく/usr/local
が表示される
注意:もしディレクトリのパスが/usr
となっていた場合は対策2に進んでください - npmディレクトリのオーナーを自分のアカウントに変更する
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
対策2:npmのデフォルトディレクトリを別のディレクトリに変更する
- グローバルインストールのためのディレクトリを作成する
mkdir ~/.npm-global
- 新しいディレクトリを使う設定をnpmで行う
npm config set prefix '~/.npm-global'
- ~/.profileを開くか作成し,以下の行を追加する
export PATH=~/.npm-global/bin:$PATH
- 3の変更を反映する
source ~/.profile
対策3:パッケージマネージャ使ってnodeを再インストールする
brew install node