Node.jsで"Error: EACCES: permission denied, access '/usr/local/lib/node_modules'"エラーが発生した場合の解決方法
エラー: EACCES: permission denied, access '/usr/local/lib/node_modules'
原因
このエラーメッセージが表示される主な原因は以下の3つです。
- 権限不足: 現在のユーザーアカウントが
/usr/local/lib/node_modules
フォルダへのアクセス権限を持っていない。 - ファイル所有者: フォルダまたはファイルの所有者が、実行しようとしているユーザーと異なっている。
- SELinux: SELinux が有効な場合、アクセス制御ルールによってアクセスが拒否されている可能性があります。
解決方法
以下の方法で問題を解決できる可能性があります。
権限の変更
以下のコマンドを実行して、/usr/local/lib/node_modules
フォルダとその内容にアクセス権限を与えます。
sudo chown -R $USER:$USER /usr/local/lib/node_modules
ファイル所有者の変更
以下のコマンドを実行して、実行しようとしているユーザーにフォルダとファイルの所有権を移します。
sudo chown -R $USER /usr/local/lib/node_modules
SELinux が有効な場合は、テスト目的で無効にして問題が解決するかどうかを確認できます。
sudo setenforce 0
その他の解決方法
上記の方法で解決できない場合は、以下の方法を試してみてください。
- npm のキャッシュをクリアする:
npm cache clean
コマンドを実行します。 - npm のバージョンを確認する: 古いバージョンの npm を使用している場合は、最新バージョンにアップグレードします。
- 問題のあるパッケージを再インストールする:
npm install --force <package-name>
コマンドを実行します。
補足
- 上記の解決方法を実行する前に、必ずバックアップを取るようにしてください。
- 問題が解決しない場合は、専門家に相談することをおすすめします。
// ファイル名: index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});
このコードを実行するには、以下のコマンドを実行します。
npm install express
エラーメッセージ
上記のコードを実行時に、以下のエラーメッセージが表示される可能性があります。
Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
このエラーメッセージが表示された場合は、上記の説明に従って問題を解決してください。
その他の解決方法
npm のバージョンを確認する
古いバージョンの npm を使用している場合は、最新バージョンにアップグレードすると問題が解決する可能性があります。
最新バージョンの npm を確認する方法
npm -v
最新バージョンにアップグレードする方法
npm install npm@latest -g
node -v
Node.js の公式ウェブサイトから最新バージョンのインストーラーをダウンロードしてインストールします。
問題のあるパッケージを再インストールする
以下のコマンドを実行して、問題のあるパッケージを再インストールします。
npm install --force <package-name>
npm のキャッシュをクリアする
以下のコマンドを実行して、npm のキャッシュをクリアします。
npm cache clean
他のユーザーアカウントで実行する
現在のユーザーアカウントに問題がある場合は、他のユーザーアカウントでコマンドを実行してみてください。
環境変数を設定する
以下の環境変数を設定すると、npm コマンドが /usr/local/lib/node_modules
フォルダではなく、別のフォルダにインストールするようになります。
NODE_PATH
: インストールするモジュールの検索パスを指定します。PREFIX
: npm コマンドがインストールするファイルの接頭辞を指定します。
環境変数は、.bashrc
や .zshrc
などのシェル設定ファイルに設定できます。
シンボリックリンクを作成する
sudo ln -s /path/to/node_modules /usr/local/lib/node_modules
権限を変更する
sudo chown -R $USER:$USER /usr/local/lib/node_modules
sudo setenforce 0
node.js npm permission-denied