その他

【Mac】npmでpermission deniedが発生した場合の対処方法

投稿日:2018年12月19日 更新日:

“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がインストールされている親ディレクトリを確認します。ターミナルで以下のコマンドを実行してください。

その結果が以下のように表示された場合は、このまま作業を進めてください。そうでない場合は、次の項目である「Homebrewで再インストールを行う」へ進み、その後も同じエラーが発生する場合は、この項目へ戻ってください。

次はnpmの関連ディレクトリ等の権限を変更します。以下のコマンドの内容を説明すると、”/usr/local/bin”、”/usr/local/share”、”/usr/local/lib/node_modules”のオーナーを自分のアカウントに変更するというものになります。。

作業は以上で完了となりますので、エラーが発生したコマンドを再実行し、エラーが解消されているか確認してみてください。私の場合はこの手順で問題は解決されました。

再インストールを行う

私の場合は公式サイトからnpmをインストールしていますが、最近はnodebrewを利用したインストール方法が主流のようです。私と同じ方法でインストールをした方が記事通りに進む可能性は高くなると思いますが、各々の環境に応じて、再インストールを行ってください。

Node.jsの公式サイト

-その他
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【レビュー】Softbank Airの速度は速いのか?それとも遅い?

最近、引っ越しをする機会があったのですが、インターネット回線をどうしようと悩んでいたところ、ソフトバンク光と契約する事になりました。ソフトバンク光にしたきっかけとしては、Softbank Airが開通 …

Gulpで複数ディレクトリのSCSSを自動コンパイルする方法!

Gulpは様々なタスクを実行するためのNode.jsで開発されているアプリケーションです。今回はGulpを利用して、SCSSを自動コンパイルする方法をご紹介したいと思います。 準備 プロジェクトのルー …

CSSフレームワークのメリットとデメリットについて

今更感が少しある内容ですが、CSSフレームワークと言えば、Bootstrap、UIkit、Bulmaなどが有名ですよね。その他でも、ミニマムフレームワークとして、最小限の機能が備えられた物もありますね …

【WordPress】使いにくい新エディタをプラグインで旧式に戻そう!

2018年12月にWordpressのバージョンが5.0へアップデートされましたが、とにかく使いづらいの一言です。久しぶりにブログ投稿でもしようかと思った時、新バージョンにアップグレードしておくかと思 …

【Node.js】npmでグローバルインストールをしない方が良い理由

npmでインストールする場合、オプションが複数存在しています。技術ブログ等でnpmを利用したパッケージのインストール方法を提示されている際、オプション付きのコマンドが用意されている場合がありますが、皆 …