npm: EACCES permission denied
npmでグローバルパッケージのインストール時に権限エラーが発生した場合の解決策
概要
npmでグローバルパッケージをインストールする際に権限不足で失敗するエラーです。
エラーメッセージ
``` 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’ } ```
原因
- グローバルディレクトリの権限: root所有のディレクトリ
- sudoでのインストール履歴: 過去にsudoを使用
- nodeのインストール方法: パッケージマネージャ経由でroot権限
- npmキャッシュの権限問題
解決策
1. npmのデフォルトディレクトリを変更(推奨)
```bash
グローバルディレクトリを作成
mkdir -p ~/.npm-global
npmの設定を変更
npm config set prefix ‘~/.npm-global’
PATHに追加 (~/.bashrc or ~/.zshrc)
export PATH=~/.npm-global/bin:$PATH
設定を反映
source ~/.bashrc ```
2. nvmを使用(推奨)
```bash
nvmをインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
シェルを再起動
source ~/.bashrc
Node.jsをインストール
nvm install –lts nvm use –lts
これ以降はsudo不要
npm install -g package-name ```
3. 既存ディレクトリの権限を修正
```bash
所有権を変更(非推奨だが緊急時)
sudo chown -R $(whoami) /usr/local/lib/node_modules sudo chown -R $(whoami) ~/.npm ```
4. npxを使用してグローバルを避ける
```bash
グローバルインストールせずに実行
npx create-react-app my-app npx eslint . ```
よくある間違い
- sudoを使い続ける(セキュリティリスク)
- /usr/local全体の権限を変更
- root権限でnpmを実行
関連エラー
関連エラー
Node.js の他のエラー
この記事は役に立ちましたか?