この記事について
npmを利用してinstallしたりupgradeしたりする際にpermission deniedと表示されてしまった時に助けになるかもしれない記事です。
現象
npmコマンドを実行すると "EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/<パッケージ名>'" というエラーが表示されてしまう。
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/<任意のディレクトリ>/npm-debug.log
対策
npm公式ドキュメントにありました。
Resolving EACCES permissions errors when installing packages globally | npm Docs
対策1: Node.jsとnpmを再インストールする(推奨)
以下のコマンドを利用して再インストールします。再インストール前のアンインストールは不要です。
npm install -g npm
対策2: npmのデフォルトディレクトリを変更する
対策1で解決しなかった場合こちらを試してみてください。
1. PCのバックアップを行う
2. グローバルインストールのためのディレクトリを作成する
mkdir ~/.npm-global
3. 新しいディレクトリを使う設定をnpmで行う
npm config set prefix '~/.npm-global'
4. ~/.profileを開くか作成し,以下の行を追加する
export PATH=~/.npm-global/bin:$PATH
5. 3の変更を反映する
source ~/.profile
6. 新しい設定を確認するために sudo
なしでpackage1をインストールしてみる
npm install -g jshint
-
packageはなんでも可能。公式ドキュメントに合わせて
jshint
としています。 ↩