Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
エラーの原因は何ですか?
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! { 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! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
ファイルのパーミッションを変更します..このように
最初にディレクトリの所有者を確認します
ls -la /usr/local/lib/node_modules
node_moduleフォルダーはルートが所有しているため、アクセスを拒否しています
drwxr-xr-x 3 root wheel 102 Jun 24 23:24 node_modules
rootをユーザーに変更することでこれを変更する必要がありますが、最初に以下のコマンドを実行して現在のユーザーを確認します OS Xのコマンドラインからアクティブユーザーの名前を取得するにはどうすればよいですか?
id -un
OR
whoami
その後、所有者を変更します
Sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
OR
Sudo chown -R ownerName: /usr/local/lib/node_modules
OR
Sudo chown -R $USER /usr/local/lib/node_modules
あなたが試みているどんなコマンドの前にも Sudo を追加してみてください。
こんな感じ: Sudo npm install
Linux/UNIXでSudoをコマンドと共に使用すると、通常、ユーザーの権限がスーパーユーザーレベルに引き上げられます。 Windowsでは、スーパーユーザーアカウントは通常「管理者」と呼ばれます。 Linux/Unixでは、スーパーユーザーアカウントは通常 'root'という名前です。
Rootユーザーは、コンピューター上のほとんどすべてのファイルにアクセス、変更、または削除する権限を持っています。通常のユーザーアカウントでは、より少ないファイルにアクセス、変更、または削除することができます。通常のアカウントに対する制限は、許可されていない、または有害なプログラムやユーザーからコンピュータを保護します。一部のプロセスでは、通常アクセス権限を持たないファイルまたはフォルダに対して操作を実行する必要があります。誰もがアクセスできるプログラムをインストールすることは、これらのアクションの1つです。
あなたのケースでは、Sudoでインストールコマンドを実行することはあなたにスーパーユーザーのパーミッションを与え、あなたがあなたの普通のユーザーが修正するパーミッションを持っていないファイルを修正することを可能にします。
グローバルパッケージを ubuntu にインストールしている間、usr/bin
フォルダに書き込むときは特別な書き込み権限が必要です。セキュリティ上の理由からです。そのため、グローバルパッケージをインストールするたびに、次のように使用します。
Sudo npm install -g [package-name]
あなたの特定のケースでは、それは次のようになります。
Sudo npm install -g TypeScript
/ local/libの所有者にUSERを追加するだけです。
Sudo chown -R $USER /usr/local/lib
権限の問題に遭遇しているようです。もしあなたがnpm-packages
をインストールしようとしているのなら、パッケージをグローバルにインストールしようとしたときにEACCES
エラーが出ている可能性があります。これは、npm
がグローバルパッケージとコマンドを格納するために使用するディレクトリに書き込む権限がないことを意味します。
Sudo chmod u+x -R 775 ~/.npm
とSudo chown $USER -R ~/.npm
のコマンドを実行するか、npm
を指定してSudo
コマンドを実行するだけで問題が解決します。
もしあなたがnpm-package
をローカルにインストールするのなら、あなたはあなたのローカルプロジェクトディレクトリにいなければならず、必要なパッケージをインストールするためにSudo npm install <pkg-name>
コマンドを実行することを試みることができます。 Sudo
を使用する目的は、所有者のアクセス権を変更して、現在のユーザーにnpm
コマンドを実行する権限を与えることができるようにすることです。
https://docs.npmjs.com/getting-started/fixing-npm-permissions をご覧になることをお勧めします。
Macでこの問題に直面している場合。次の手順に従ってください
以下のコマンドを使用して、このファイルの所有者を最初に確認します
ls -la /usr/local/lib/node_modules
あなたは以下のようなファイルを見つけるでしょう
drwxr-xr-x 3ルートホイール768 5月29日02:21 node_modules
上記のファイルがルートによって所有されていることに気づきましたか?.
このコマンドで現在のユーザーを確認できます
id -un (in my case user is yamsol)
このコマンドを呼び出すことで変更できます(ユーザー名をownerNameに置き換えるだけです)
Sudo chown -R ownerName: /usr/local/lib/node_modules
私の場合、ユーザーが「yamsol」であることを知っているので、このコマンドをこの方法で呼び出します
Sudo chown -R yamsol: /usr/local/lib/node_modules
それでおしまい。
Sudoユーザーとしてnpm
をインストールするには、このコマンドを使用します。
Sudo npm install -g create-react-app
の代わりに/ npm install -g create-react-a pp。
/usr/local の下にあるすべてのディレクトリの所有者を変更するすべての応答に注意してください。基本的に、Linuxシステムをめちゃくちゃにしないでください。
私は最善の方法はすべてのグローバルパッケージを見つけるためにあなた自身のフォルダを使うことだと思います: https://www.competa.com/blog/how-to-run-npm-without-Sudo/
React Expoをインストールしようとしていたのですが、須藤とは別に--unsafe-permを追加する必要がありました
このような。これで問題が解決します
Sudo npm install -g expo-cli --unsafe-perm
Linux/ubuntuの場合、コマンド
npm install -g <package_name>
npm WARN deprecated [email protected]: Please note that v5.0.1+ of superagent removes User-Agent header by default, therefore you may need to add it yourself (e.g. GitHub blocks requests without a User-Agent header). This notice will go away with v5.0.2+ once it is released.
npm ERR! path ../lib/node_modules/<package_name>/bin/..
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall symlink
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules
/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'
npm ERR! { [Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>']
npm ERR! cause:
npm ERR! { Error: EACCES: permission denied, symlink '../lib/node_modules/<package_name>/bin/..' -> '/usr/local/bin/<package_name>'
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/<package_name>/bin/..',
npm ERR! dest: '/usr/local/bin/ionic' },
npm ERR! stack:
npm ERR! 'Error: EACCES: permission denied, symlink \'../lib/node_modules/ionic/bin/ionic\' -> \'/usr/local/bin/ionic\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'symlink',
npm ERR! path: '../lib/node_modules/<package-name>/bin/<package-name>',
npm ERR! dest: '/usr/local/bin/<package-name>' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).
npm ERR! A complete log of this run can be found in:
npm ERR! /home/User/.npm/_logs/2019-07-29T01_20_10_566Z-debug.log
修正:ルート権限でインストール
Sudo npm install <package_name> -g
Sudoを使用しましたが、問題は解決しませんでした。node_modulesフォルダーのアクセス許可を変更して問題を修正しました。
Sudo chmod -R 777 node_modules
すべてのユーザー/グループにアクセス許可を設定しない場合、必要に応じて777を他のコードに置き換えることができます。
このように命令する前に単に所有者を変更するかSudoを使うことができます。
Sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
-----所有者を変更
または
Sudo sudo npm install -g json-server
それでおしまい。
nvm
をインストールし、ノードを最新バージョンに設定することで、この問題を取り除くことができました。
nvm
を使用してcurl
をインストールします(最新バージョンの場合は nvm.sh に移動します)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
nvm ls
v10.12.0
default-> v10.12(-> v10.12.0)
node-> stable(-> v10.12.0)(デフォルト)
stable-> 10.12(-> v10.12.0)
…
nvm use v10.12
nvmはnpm config "prefix"オプションと互換性がありません:現在 ""に設定されています
nvm use --delete-prefix v10.12.0
上記のコマンドを実行すると、Ubuntuにreact/angularをインストールできるようになります。
Reactをインストールするにはスーパーユーザーレベルの許可が必要です。 Linux/Unixでは、スーパーユーザーアカウントは通常 'root'という名前です。
スーパーユーザー特権を取得するには、端末で次のコマンドを実行するだけです。
Sudo i
それからReactをインストールするためのコマンドを実行します。
npm install -g create-react-app
man npm install
で説明されているように、ローカルではなくグローバルにnpmパッケージをインストールしようとしたようです。
-gまたは--global)引数を指定すると、npmはパッケージをローカルではなくグローバルにインストールします。
一般的に、あなたがnpmプロジェクトを設定するとき(あなたが持つことができる他の多くの中で)、デバッグログとしてNode.jsグローバルモジュール(/ usr/local/lib/node_modules)にパッケージをインストールすることはお勧めできません。提案した。
-g
を使用する代わりに、--save
を使用します。これにより、パッケージはpackage.json
ファイルの依存関係として自動的に保存されます。
このような:
$ npm install express-generator --save
$ cat package.json
{
"name": "first_app_generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "ivanleoncz",
"license": "MIT",
"dependencies": {
"express-generator": "^4.16.0"
}
}
しかし他の答えが述べたように、もし-g
を使うつもりなら、npm install express-generator -g
を実行するときはSudo
あなたのユーザがSudo権限を持っているなら:/ etc/sudoers)を使わなければなりませんパーミッションの問題を引き起こす可能性があります。
_(_ notice _
スクリプトexpress-generator
をシステムパスで使用できるようにするために、-g
オプションを指定してexpress-cli.js
をインストールする手順がありますが、npmプロジェクトの場合はnode_modules
にあるローカルにインストールされたスクリプトも使用できます。
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
/ usr/bin/env: 'node':そのようなファイルもディレクトリものようなメッセージが表示された場合は、
nodejs-legacy
をインストールしてください(Debian/Ubuntu)
-g
を使う(これもSudo
を使う)のは、結果がよくわからない場合はhic sunt dracones)のようなものです。
詳細については:
Webpackモジュールでも同様の問題が見つかりました。私の解決策-node_modulesフォルダーrm -rf node_modulesを削除し、sudoなしでnpm iを実行します-インストールは動作するはずです。