Reactでプログラムを作成しているとき
npm start をしても、「sh: 1: react-scripts: Permission denied」というエラーが発生したので
その解決法を備忘録的に書いていきます。
調べてみると、色々なパターンがありそうでしたが
今回はsh: 1: react-scripts: Permission deniedのみが発生した時のパターンです。
解決手順
以下のコマンドを順番に打ち込んでいく。
sudo rm -rf node_modules
npm i
この2つのコマンドを打ったら解決しました。
コマンド解説
簡単ではありますがコマンドについて説明
sudo rm -rf node_modules
sudo
: スーパーユーザー(root)権限でコマンドを実行。rm
: ファイルやディレクトリを削除するためのコマンド。-rf
:r
は再帰的に、f
は強制的に(force)削除するオプション。node_modules
ディレクトリとその中身を再帰的に削除し、確認なしに削除を実行します。
このコマンドを実行すると、Node.jsプロジェクトで依存関係を管理するために使用されるnode_modules
ディレクトリを完全に削除されます。
一般的にはプロジェクトの依存関係を再構築する場合や、不要なファイルを削除するために使われます。
npm i
npm install
と同じ意味。
このコマンドを実行すると、npmはプロジェクトに設定されたpackage.json
ファイルを基にして、必要なパッケージ(モジュールやライブラリなど)をダウンロードしてきて、node_modules
ディレクトリにインストールします。
なんで解決したのか
sh: 1: react-scripts: Permission denied
というエラーが発生する場合、react-scripts
というスクリプトへのアクセス権限の問題が原因。
sudo rm -rf node_modules
コマンドは、node_modules
ディレクトリとその中身を再帰的に削除してnpm i
コマンドを実行することで、react-scripts
などが適切にインストールされたと思われます。