エラー:EACCES:権限が拒否されました


96

npm install lodashを実行しましたが、Error:EACCES:permission denied error がスローされます。私はそれが権限の問題であることを知っていますが、私の知る限り、sudo権限はノードモジュールをローカルにインストールするために必要ではありません。sudoで実行すると、〜/ node_modulesフォルダー内にインストールされます。drwxrwxr-xは、既存のフォルダのファイル権限です。何が悪いのかわからない。

以下はエラーメッセージです。

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/rupesh/Desktop/es6/npm-debug.log

フォルダの所有者はnode_modulesルートですか?
AJS 2016

lodashをインストールする予定のフォルダー内に、node_moduleフォルダーがまだ作成されていません。
xruptronics

/ home / rupesh /ディレクトリまたはその他のディレクトリでnpm installを実行しましたか?
AJS 2016

npm installを実行するフォルダのパスは〜/ Desktop / es6です
xruptronics

ls -l ~/Desktop | grep es6あなたはes6ディレクトリの所有者であることを確認してください
AJS

回答:


76

このコマンドは問題を修正します。それは私のために働きました:

sudo npm install -g --unsafe-perm=true --allow-root

私のような人にとって、このコマンドは執筆時点では機能していv10.10.0たようですが、Node については「npm ERR!/ var / www / projectをインストールできません:パッケージ名がありません」
Wayne Smallman

1
フラグ--unsafe-perm = true --allow-rootは、ノードv10.15.0を使用してユーザーrootとして、node-sassがインストールしない既存のアプリケーションをインストールするために機能しました。node-sassをローカルディレクトリにインストールするために使用した正確なコマンドnode_modulesフォルダーは#npm install --save-dev --unsafe-perm = true --allow-root node-sass @ latest
Peter Edwards

rootを使用して問題を解決できます(ただし、これはお勧めできません)。
Chris Marotta

これらのフラグを使用して機能させることができたので、実際には:sudo npm install -g --unsafe-perm = true --allow-root <package-name> @ <version-name>
Frank Hu MSFT

45

グローバルでのWebpackサーバーのインストールで同じ問題があります。このURLの手順を使用してください私の問題を解決しました。

上記の手順:開始する前にコンピュータをバックアップします。

グローバルインストール用のディレクトリを作成します。

1。 mkdir ~/.npm-global

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

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

〜/ .profileファイルを開くか作成して、次の行を追加します。

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

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

4。source ~/.profile

テスト:sudoを使用せずにパッケージをグローバルにダウンロードします

npm install -g jshint

手順2〜4の代わりに、対応するENV変数を使用できます(たとえば、〜/ .profileを変更したくない場合)。

NPM_CONFIG_PREFIX=~/.npm-global

1
モハベに取り組んだ。4〜5時間のトラブルシューティングの後、多くの感謝がこれでうまくいきました!
ジョニー

11

npm initを使用してpackage.jsonを作成すると、問題が解決しました。


しかし、私は--saveまたは--save-devまたは同様のコマンドを使用していないため、package.jsonファイルが更新または使用されていないため、ノードモジュールのインストール中にpackage.jsonファイルが必要な理由がわかりません。
xruptronics 2016

これは奇妙です。npmの設定で何かがめちゃくちゃになっていて、それをinitリセットすると、とにかくどこにも同じような問題への単一の参照が見つからなかったので、それは永遠に謎であるはずです。
AJS、2016

npm 6.9.0でも同様の問題がありましたが、これでもうまくいきました。
Chris Marotta

11

Linuxで問題が発生しました。私が書いた

chown -R myUserName ./* 

私のプロジェクトフォルダ内。


6
非常にお勧めしません。これはすべてのディレクトリに影響を与え、それらのいずれかに対するルート権限を削除します。rootとして設定する必要があるものがある場合、これは現在の構成を破棄します。
Patrick Da Silva、

7

あなたが投稿したログで私が見ることができるものから:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

ディレクトリに/home/rupesh/node_modules/はディレクトリを作成するために必要な権限がないため、これを実行chown -r rupesh:rupesh /home/rupesh/node_modules/すると解決します。


chown -R rupesh:rupesh / home / rupesh / node_modules /を実行し、npm install lodashを再度実行すると、lodashが〜/ node_moduleフォルダー内にインストールされますが、今回はエラーはスローされませんが、インストールする場所ではありません。
xruptronics

はい、デスクトップではなく、ホームディレクトリにプロジェクトを作成する必要があります。npmが何らかの理由でモジュールをインストールしています/home/rupesh/node_modules。とにかく、ホームディレクトリで作業する方法が理想的です
AJS

〜/ Projects / es6は、〜/ Desktop / es6構造と同等であると思います。私が理解できないのは、node_modulesがes6フォルダー内に作成されず、lodash(またはその他の)モジュールがその中にインストールされない理由です。私は以前この問題に直面していませんでしたが、今日何がうまくいかなかったか、それが私が理解したいことです。
xruptronics

ええ、前の2つのコメントを読んで、愚かさを実感しました:)、よく見回してみたところ、同じ問題を抱えている人を見つけることができませんでした。あなたのコードはloadashモジュールを見つけることができますか?
AJS 2016

6

others(rx)の書き込み権限がありません。で試す

chmod a+w <folder>

そして繰り返します。


2
ていないchown持っている-r中で、それぞれとすべてのフォルダにそれを使用する必要がないようにするオプションをnode_modules
DrakaSAN 2016

@Juanjo Salvador動作しませんでした。同じエラーが発生します。
xruptronics

@DrakaSANそうです、chownには再帰的なオプションがあります。
Juanjo Salvador

6

これは私の問題をすぐに解決しました-Mac Mojave 10.14.6-PhpStorm。

未処理の拒否エラー:EACCES:権限が拒否されました、mkdir '/Users/myname/.npm/_cacache/index-v5/fb/5a'

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

元の投稿:https : //stackoverflow.com/a/50639828


5

以下のコマンドを使用して、プロジェクトフォルダへのすべての権限を付与してみてください

sudo chmod -R 777 /yourProjectDirectoryName

と一緒に走る

sudo npm install lodash

それはjrソリューションです
Pablo Papalardo

あなたは777を必要としないかもしれません。私にとっての問題は、#が低すぎることだけでした。(775で修正しました。)
Andrew

4

FWIW同じ症状がありましたが、パッケージが異なりました。作成package.jsonして実行npm initしても問題は解決しませんでした。

このシステムでは、明らかにこの場所に新しいフォルダがroot権限で作成されていました。中にnpm install、新しいフォルダが作成されます。これにより、sudoを使用しても、npmのインストールが途中で失敗しました。

解決策はnpm install app、ルートumaskなしで別の場所で実行することでした。


4

関連する問題:

数日間にわたる3時間の無駄。

AWS EC2マシンでは、以下が機能しました:

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

お役に立てば幸いです。


3

この問題は、npmディレクトリの権限を変更することで解決しました。私はそれがあった私のためにnpmグローバルディレクトリに行きました

/home/<user-name>

このコマンドを入力して、このディレクトリに行きました

cd /home/<user-name>

次に、このコマンドを入力して、.npmフォルダーの権限を変更しました。

sudo chmod -R 777 ".npm"

それは私にとって魅力のように働きました。しかし、これにはセキュリティ上の欠陥があります。つまり、グローバルパッケージディレクトリにすべてのレベルからアクセスできます。


全世界にこの特定のフォルダへのアクセスを許可するのはなぜですか?
egdavid

2

最初に、ルートに-g(グローバル)なしでインストールします。-g(グローバル)を使ってみたところ、うまくいきました。


働いた!Macでは、私のコードフォルダをルートフォルダHardDrive /に移動し、「npm install」は問題なく実行されました。次に、コードフォルダをHardDrive / users / myUserName / Projects / code内の目的の場所に戻し、もう一度「npm install」を実行しましたが、今回は機能しました。
Josh

2

LUBUNTU 19.10 /同じ問題が発生している:$ npm start

ダンプ:エラー:EACCES:権限が拒否されました。オブジェクトで「/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json」を開きます。 fs.openSync(fs.js:646:18)at Object.fs.writeFileSync(fs.js:1299:33)at save(/ home / simon / xxx / pagebuilder / resources / scripts / registration / node_modules / @ babel / register / lib / cache.js:52:15)at _combinedTickCallback(internal / process / next_tick.js:132:7)at process._tickCallback(internal / process / next_tick.js:181:9)at Function.Module.runMain (module.js:696:11)オブジェクトで。(/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23)at Object._compile(module.js:653:30)at Object .Module._extensions..js(module.js:664:10)at Module.load(module.js:566:32)

デフォルトのユーザー(管理者)がノードモジュールディレクトリに対する権限を持っていないようです。

これで解決しました!

$ sudo chmod a+w node_modules -R ## from project root


2

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

mkdir ~/.npm-global

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

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

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

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

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

source ~/.profile

sudoを使用せずにパッケージのインストールをグローバルにテストします。


1

以下は、GNU / Linux(Debian)ユーザー向けのソリューションです(USERNAMEユーザー名に置き換えてください)。

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config


0

Windowsでは、そのポートはすでにIISによって使用されていました。

IISを停止(右クリック、終了)すると、問題が解決しました。


0

グローバルnode_modulesディレクトリの所有者を自分のユーザーに変更するだけです。

sudo chown -R $USER:$GROUP /usr/local/lib/node_modules

-2

これらのコマンドを実行すると、問題が解決します!

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules

/usr/localすべてのサブディレクトリについて、権限はrwxr-xr-xrootが所有し、所有する必要があります。システムのユーザーは、このdir構造内で読み取りおよび実行できますが、ファイルの編集、作成はできません。そうは言っても、あなたの答えは全員に許可を与えることを提案しています。また、影響を受ける方法と影響、または問題が解決される理由については説明しません。
クリラジ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.