npm install -gでError: EACCES: permission denied

npm installで-gをつけたグローバルオプション指定時にエラーがでた時の対処法

今日、firebase-toolsをインストールしようとした。

npm install -g firebase-tools

すると以下のメッセージが表示された。

npm ERR!  { [Error: EACCES: permission denied, unlink '/usr/local/lib/node_modules/firebase-tools/LICENSE']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'unlink',
npm ERR!   path: '/usr/local/lib/node_modules/firebase-tools/LICENSE' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! error rolling back Error: EACCES: permission denied, unlink '/usr/local/lib/node_modules/firebase-tools/LICENSE'
npm ERR! error rolling back     at Error (native)
npm ERR! error rolling back  { [Error: EACCES: permission denied, unlink '/usr/local/lib/node_modules/firebase-tools/LICENSE']
npm ERR! error rolling back   errno: -13,
npm ERR! error rolling back   code: 'EACCES',
npm ERR! error rolling back   syscall: 'unlink',
npm ERR! error rolling back   path: '/usr/local/lib/node_modules/firebase-tools/LICENSE' }

パーミッションエラーとなってしまった。

sudo を付ければインストールできるけども危険な方法らしい。

こんな時はグローバルモジュールのパーミッション変更を行う

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

あとは.bashrcに以下を追加

export PATH="$HOME/.npm-global/bin:$PATH"

その後にsource .bashrcして

source .bashrc

npmを-gでインストールしなおして

npm install -g npm

sudoを付けるにfirebase-toolsをインストールしてみると

npm install -g firebase-tools

無事にインストールできましたー