npm install -g lessが機能しない:EACCES:権限が拒否されました


203

保存時に.cssに.lessファイルをコンパイルできるように、phpstormで設定を少なくしようとしています。node.jsをインストールし、次のステップ(このhttps://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.htmlに従って)でこのコマンドを実行していますターミナル

npm install -g less

しかし、これを行うと、これらのエラーが発生します

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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!     /Users/brentscholl/npm-debug.log

私はここで完全に初心者なので、次に何をすべきかわかりません。どんな助けでも大歓迎です!

回答:


354

sudoの使用は推奨されません。後で許可の問題が発生する可能性があります。上記は機能しますが、私はrootが所有するフォルダーをユーザーが書き込み可能に変更するのは好きではありませんが、それは複数のユーザーの問題である可能性があります。これを回避するには、「npm users」のグループを使用できますが、これは管理オーバーヘッドも増加します。ドキュメントの権限を処理するオプションについては、https//docs.npmjs.com/getting-started/fixing-npm-permissionsを参照してください。

私はオプション2に行きます:

アクセス許可エラーの可能性を最小限に抑えるために、別のディレクトリを使用するようにnpmを構成できます。この例では、ホームフォルダーの隠しディレクトリになります。

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

 mkdir ~/.npm-global

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

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

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

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

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

 source ~/.profile

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

npm install -g jshint

それでも権限エラーが表示される場合(mac os):

sudo chown -R $USER ~/.npm-global   

これは、以下のデフォルトのUbuntuインストールで機能します。

sudo apt-get install nodejs npm

nvmバージョン管理の柔軟性を高めたい場合は、https//github.com/creationix/nvmをお勧めします

MacOSではbrewを使用しsudoますnpm。最近のバージョンを使用している場合は、そのまま使用できます。楽しい :)


ヘッドアップ-Ubuntu 18.04では、すべての新しいターミナルウィンドウに変更が自動的に適用される前に、ログアウトして再度ログインする必要がありました。
Alexander Nied

アレクサンダー、ソースコマンドを使用したことを確認しましたか?これで適切な環境変数が設定されます。ログアウトは必要ありません(機能します)。
Vincent Gerris、2018年

これは機能しませんでした$ npm install -g jshint npm ERR!npm ERRの終了後に書き込みます!この実行の完全なログは、npm ERR!/home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith

3
この「MacOSではbrewを使用してください」を
ありがとう

110

ターミナルウィンドウでこれらのコマンドを実行します(注:$ USERの部分は置き換えないでください...ユーザーを取得するLinuxコマンドです!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules

7
自分をの所有者にするのは良い考え/usrですか?他の誰かがノードのものをインストールしたい場合はどうなりますか?
マーク

6
MacOSのハイシエラに私のために働いた、私は唯一の3つのコマンドのいずれかが必要:sudo chown -R $USER /usr/local/lib/node_modules。@マークそのとおりですが、ユーザーが1人しかいなくても問題ありません。
Fabian von Ellerts、2018

@FabianvonEllertsさて、sudoはもう必要ないので、誤ってシステムファイルを削除する方が簡単です...一人でもベストプラクティスに従うだけですが、それはもちろんあなた次第です。
マーク・

私はMarkと一緒です。1人のユーザーがいない限り(そしてそれでも)、1人のユーザーが/ usrサブディレクトリを所有したくない場合は、グループを使用することをお勧めします。しかし、おそらくもっと良いのは、私の回答で述べたようにbrewを使用することだけです。そのままでrootなしで機能します。
Vincent Gerris、

11

npmのドキュメントに記載されているように)Node Version Mangerを使用してノードとnpmを再インストールし、権限エラーを回避します

OSXの場合:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

またはこの記事に従ってください:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Windowsユーザーはnvm-windowsをインストールする必要があります。nvmのインストール方法の詳細については、nvm readmeを参照してください。

次に例を選択します。

nvm install 8.0.0
nvm use 8.0

今、あなたはもう一度試すことができます:

npm install -g less

1
これを使用して、CodeSandboxにパッケージをインストールする際の権限の問題を解決しました。
キーステイラー

11

Mac OS Xの回答

node_modulesディレクトリへの書き込みアクセス権がありません

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

書き込みアクセス権を持つディレクトリにユーザーを追加します

  1. node_modulesを含むフォルダーを開く

    / usr / local / lib /を開きます

  2. node_modulesフォルダーでcmd + Iを実行して、権限ダイアログを開きます
  3. 共有と権限のセクションで読み取りと書き込みのアクセス権を持つユーザーを追加します ここに画像の説明を入力してください

MacOSの最も簡単で効率的なソリューション
itsazzad


7

私のMac環境用

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

問題を解決する


これは上記の@VagnerRodriguesの回答ですでにカバーされていると思います。
entpnerd

はい、そうです、Mac環境について述べました
Asadut Zaman

3

以下のコマンドを押すだけです:

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

分解してみましょう:

sudo

これは、システムのスーパーユーザーであるrootとしてこのコマンドを実行していることを意味します。これは、そのフォルダーへの書き込み権限がないためですが、rootはすべての権限を修正できます。このコマンドは、システムが確認のためにパスワードを要求することも意味します。

チャウン

ファイルまたはフォルダーの所有者を変更するために使用するコマンドです。-Rオプションを設定して所有者を再帰的に変更し、そこにすでに含まれているすべてのファイルへの所有者アクセスも取得します。

$ USER

ユーザー名に自動的に設定される環境変数です。

そして最後の部分はフォルダパスです。

このパスを実行すると、フォルダーが自分のものになるため、npm install -gコマンドを安全に実行できます。


0

私は提案されたすべての解決策を試しましたが、何もうまくいきませんでした。

macOS Catalina 10.15.3を使用しています

/ usr / local /に移動します

binフォルダを選択>情報を取得

ユーザーを共有と権限に追加します。読み取りと書き込みのアクセス許可。 ここに画像の説明を入力してください

そしてターミナルに行き、npm install -g @ ionic / cliを実行します

それは私を助けました。


-1

Linuxでは、すべての権限を取得するために、

sudo su


-3

こんにちは私はUbuntu 18を使用していますが、Prismaをインストールするときにこのエラーメッセージも表示さsudoれました。

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