“npm install”や”npm install -g”で何かをインストールしようとした際に”permission denied”というパーミッションに関するエラーが発生する事があります。今回はその対処方法をご紹介したいと思います。
ちなみに筆者の環境はMacbook ProでOSバージョンはMojave 10.14.1です。また、npmのバージョンは6.4.1です。基本的にMacやLinuxで発生しやすいエラーだと思いますが、環境のバージョンが違っていたとしても、大抵はこの記事の情報で解決できると思われます。本記事では、Macを利用している事を前提に進めます。
基本的にディレクトリ権限に問題がある
基本的な原因は、npmがインストールされている関連ディレクトリの権限設定にあります。”npm install”を行うと、新たなファイルをダウンロードし、npmに関連したディレクトリに保存する事を試みますが、ディレクトリにアクセスする権限が不足しているために”permission denied”が発生している場合が多いでしょう。
解決方法
エラーの原因によって、対象方法は異なりますので、いくつかの解決方法を提示しておきます。
sudoを利用する
単純にsudoを利用する事で改善される可能性があります。もしも、毎回そうするのが面倒であれば、「ディレクトリの権限を設定する」でsudoは不要になります。
ディレクトリの権限を設定する
基本的に「ディレクトリの権限を設定」する事でエラーが解消される場合がほとんどだと思われます。npmに関連したディレクトリの権限を設定するというシンプルなものです。
まず、npmがインストールされている親ディレクトリを確認します。ターミナルで以下のコマンドを実行してください。
1 |
npm config get prefix |
その結果が以下のように表示された場合は、このまま作業を進めてください。そうでない場合は、次の項目である「Homebrewで再インストールを行う」へ進み、その後も同じエラーが発生する場合は、この項目へ戻ってください。
1 |
/usr/local |
次はnpmの関連ディレクトリ等の権限を変更します。以下のコマンドの内容を説明すると、”/usr/local/bin”、”/usr/local/share”、”/usr/local/lib/node_modules”のオーナーを自分のアカウントに変更するというものになります。。
1 |
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share} |
作業は以上で完了となりますので、エラーが発生したコマンドを再実行し、エラーが解消されているか確認してみてください。私の場合はこの手順で問題は解決されました。
再インストールを行う
私の場合は公式サイトからnpmをインストールしていますが、最近はnodebrewを利用したインストール方法が主流のようです。私と同じ方法でインストールをした方が記事通りに進む可能性は高くなると思いますが、各々の環境に応じて、再インストールを行ってください。