2021 December 7th
npmを使ったグローバルインストールでエラーが発生した際の対処法
npmでパッケージをグローバルインストールしようとしたらパーミッションエラーが発生した時の対処法について。
余談
npmで-gを使用しないインストールは普段行っていたのですが、
npm install -g [パッケージ名]
上記のコマンドでパッケージをグローバルインストールしようとした際に以下のエラーが発生しました。
errno -13 Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
解決方法
所有権を現在使用しているユーザーに変更するため、以下のコマンドを実行します。
sudo chown -R $( whoami ) /usr/local/lib/node_modules
コマンド解説
sudo: スーパーユーザー(最も実行権限のあるアカウント)でコマンドを実行
chown -R: 指定したディレクトリとそのディレクトリ以下のファイルやディレクトリ(ここではnode_modulesの中身を指します)の所有権を変更する
/usr/local/lib/node_modules: 上記のコマンド対象となるディレクトリのパス
変数解説
$(): ()の中に変数名を入れることで文字列としてコマンド内で表示可能です。
whoami: 現在のユーザー名を表します。
なぜこのエラーが発生したのか
npmでパッケージをグローバルインストールする際にはnode_modulesディレクトリとその配下へのアクセス権限が必要です。
今回の場合、コマンドを実行したユーザーにはnode_modulesに変更を加える権限がなかったためパッケージのインストールが出来ず、上記のエラーが出てしまいました。