npmインストール時:未処理の拒否エラー:EACCES:権限が拒否されました


271

私はなんとかnpmインストールを壊してしまいました、そしてを使用してパッケージをインストールしようとするときはいつでもnpm install、これらの行に沿ってエラーメッセージを受け取ります:

未処理の拒否エラー:EACCES:権限が拒否されました、 '/ Users / marknorgate / .npm / _cacache / tmp / a449402d'を開いてください

node&npmを再インストールしてみました。また、これらの手順を使用してnpmキャッシュを別の場所に再配置しようとしましたが、何も機能しません。

どうすればそれを機能させることができますか?

回答:


924

次のように、ユーザーのnpm関連フォルダーの所有権を現在のユーザーに復元します。

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

10
これは、機能しなかった他の4〜5のことを試した後、私にとってはうまくいきました:1)--unsafe-perm、2)npmのアップグレード、3)再起動、4)sudoでの実行など
Alex York

2
@AlexYorkと同じです。私は自分のユーザーとグループをこれら2つの所有者としてすでに見ましたが、サブディレクトリまたは2つの所有者が異なっていたと思います。ありがとう!
Vedran

1
これは私にとってはうまくいきました:)、その前に私はこのdocs.npmjs.com/…を試していました。同じ問題なのか別な問題なのか理解できません。
nim118

1
私のノードとの衝突のある時点で、それらのキャッシュディレクトリの1つがroot所有権付きで作成されたようです。これはすべて修正されました。ありがとうございました!
Lonnon Foster

2
これは私のために働いた、ありがとう!npmが推奨するノードバージョンマネージャーを使用してnpmを再インストールしようとしましたが、機能しませんでした!
Winnie Phan


42

これは、NPMを初めて実行するときに、たとえばnpm install -gを実行しようとしたときにsudoを使用した場合に発生します。

キャッシュフォルダーは、rootではなく、現在のユーザーが所有する必要があります。

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

これにより、(sudoではなく)通常のユーザー権限で実行すると、上記のフォルダーに所有権が付与されます。

また、SUDOを使用してグローバルパッケージをインストールしないでください。権限に関する問題が発生した場合は、グローバルディレクトリを変更する価値があります。ドキュメントはお勧めします:

mkdir ~/.npm-global

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

次に、それを定義する場所(〜/ .profileなど)でPATHを更新します

export PATH=~/.npm-global/bin:$PATH

次に、PATH env変数が設定されていることを確認する必要があります(端末を再起動するか、sourceコマンドを使用します)。

https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally


3
理由に関する明確な説明のためにこれを投票してください:)
lnoogn

うん。これにより、上記の「正しい解決策」で解決できなかった問題が解決されました。
ジョンスミス

このすべてのものはnpmによって抽象化する必要がありますが、代わりに手動で処理する必要があります。メンテナがこのようなものを修正することは高い優先順位だと思うでしょうが、私は何を知っていますか?これらのコマンドを実行する必要がある理由を説明していただきありがとうございます。
YungGun


9

上記の答えは私にはうまくいきませんでした。だけでコマンドを実行してみてください--unsafe-perm

例えば

npm install -g node@latest --unsafe-perm

これで問題は解決したようです。


@JenLimあなたはそれを整理したかどうか?
Junaid Farooq

端末で次のコマンドを実行して問題を解決しました:npm cache clear — force。
Aspyn Lim






1

所有権を変更する

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

sudoを使用してパッケージをインストールしたときに機能しました


1

これを使ってみてください:コマンドラインのホームディレクトリに、グローバルインストール用のディレクトリを作成します。

mkdir ~/.npm-global

新しいディレクトリパスを使用するようにnpmを構成します。

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

任意のテキストエディターで〜/ .profileファイルを開くか作成して、次の行を追加します。

export PATH=~/.npm-global/bin:$PATH

コマンドラインで、システム変数を更新します。

source ~/.profile

これでnpm installを使用できます。


0

あなたはエキスポのために次のコマンドを試すことができます:

sudo chown -R $USER:$GROUP ~/.expo



-1

これは私のために働きます:

sudo chown -R $(whoami) ~/.npm

私は-g唯一のユーザーなので、使用しませんでした。MacBook Airを使用しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.