マシンにLESSをインストールしようとしていますが、すでにノードをインストールしています。ただし、「node install -g less」と入力すると、次のエラーが表示され、何をすべきかわかりません。
FPaulMAC:bin paul$ npm install -g less
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/less' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! cwd /usr/local/bin
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/less
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! error rolling back errno: 3,
npm ERR! error rolling back code: 'EACCES',
npm ERR! error rolling back path: '/usr/local/lib/node_modules/less' }
npm ERR! not ok code 0
Re Explosion Pills「インストールは任意のスクリプトを実行でき、Sudoで実行すると非常に危険になる可能性があります!」
Sudoを使用するのは間違った方法のようです。
「/ usr/localフォルダー内のファイルの所有者を現在のユーザーに変更します。」
Sudo chown -R $USER /usr/local
次に、インストールを実行します
node install -g less
チェックアウト:
正直、これはnpm
からの悪いアドバイスです。インストールでは任意のスクリプトを実行できますが、Sudo
を使用して実行すると非常に危険です。 Sudo npm install -g less
を実行してグローバルにインストールすることもできますが、代わりにnpm設定を更新することをお勧めします。
#~/.npmrc
prefix=~/.npm_modules
その後、パスを更新できます。
#~/.bashrc or ~/.zshrc, etc.
export PATH=$PATH:$HOME/.npm_modules/bin
そうすれば、インストールを実行するのにroot権限は不要であり、引き続きバイナリを使用できます。
ただし、これはユーザーにのみ適用されます。システム全体でモジュールを使用できるようにするには、全員にパスを追加するように指示する必要があります。より複雑で堅牢なソリューションには、グループがインストールできるノードモジュール/バイナリを含むフォルダーを追加し、全員のパスにthatを追加することが含まれます。
コマンドの先頭にSudo
を追加するだけです。前に述べたように、インストールは危険な可能性のあるスクリプトを実行しますが、グローバルにインストールすることは非常に役立ち、はるかに簡単です。
Sudo npm install -g less
を実行します
これは間違いなく役立ちます。 npm自体で答えます。 https://docs.npmjs.com/getting-started/fixing-npm-permissions
以下は、便宜上URLから抽出したものです。
オプション1:パーミッションをnpmのデフォルトディレクトリに変更する
Npmのディレクトリへのパスを見つけます。
npm config get prefix
多くのシステムでは、これは/ usr/localになります。
警告:表示されたパスが/ usrのみの場合、オプション2に切り替えます。そうしないと、アクセス権が台無しになります。
Npmのディレクトリの所有者を現在のユーザーの名前(ユーザー名!)に変更します。
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
これにより、npmおよびその他のツール(lib/node_modules、bin、およびshare)によって使用されるサブフォルダーのアクセス許可が変更されます。
オプション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`
手順2〜4の代わりに、対応するENV変数を使用できます(たとえば、~/.profile
を変更したくない場合)。
NPM_CONFIG_PREFIX=~/.npm-global
オプション3:これを処理するパッケージマネージャーを使用する
Mac OSでNodeの新規インストールを実行している場合、Homebrewパッケージマネージャーを使用して、この問題を完全に回避できます。 Homebrewは、すぐに正しい権限で設定します。
brew install node
これは、OPで言及されている問題を回避するためにLessコンパイラーを使用するために必要なことです。
Sudo npm install npm -g
Sudo npm install -g less
(Sudoがすべての違いを生みます)/usr/local/bin/lessc
私の場合、5.3.0→5.4.2からnpmバージョンを更新する必要がありました。
この-- npm i -g npm
を使用する前に、2つのコマンドを実行して問題を完全に解決する必要がありました。それはあなたの問題を解決する可能性が高いです。
ステップ1:Sudo chown -R $USER /usr/local
ステップ2:npm install -g cordova ionic
この後、npmを最新バージョンに更新する必要があります
ステップ3:npm i -g npm
その後、あなたは行ってもいいです。これで問題が解決することを願っています。乾杯!!
npmには、EACCES(エラー:アクセス)エラーが発生した場合の npm権限の修正 に関する公式ページがあります。ページにはビデオもあります。
次の2つのオプションのいずれかを使用して、この問題を修正できます。
- パーミッションをnpmのデフォルトディレクトリに変更します。
- Npmのデフォルトディレクトリを別のディレクトリに変更します。
私にも問題がありました。これは私がやったことです:
次に、nodeJSサイトに移動して、再度インストールします。インストールオプションの2番目のオプション(npmパッケージなど)を選択します。それをインストールします。あなたは今までに解決しなければなりません。
私はこれが古い質問であることを知っていますが、解決策はどれも良い習慣のように見えなかったので、私はこの問題をどのように解決したかを述べています:
Homebrew を使用してこの問題を解決しようとしましたが、ノードを/usr/local directory
にインストールしていたため、再びEACCES
エラーが発生しました。
nvm のようなバージョンマネージャを使用する必要がありました。詳細については、公式の npmガイド を参照してください。
さまざまな オペレーティングシステム の場合。
nvmはノードとそのモジュールをユーザーのHOME FOLDERにインストールし、それによりEACCES
の問題を解決します。