React Native Android: "Cannot run program 'node'" エラーの解決方法
問題の説明
React NativeプロジェクトをAndroid Studioで実行しようとすると、以下のエラーが発生することがあります:
:ReactNative:Running ‘[node, -e, console.log(require(‘react-native/cli’).bin);]’ command failed.
- Where:
Script ‘/Users/…/Desktop/…/node_modules/@react-native-community/cli-platform-android/native_modules.gradle’ line: 154
- What went wrong:
A problem occurred evaluating script.
> Cannot run program “node”: error=2, No such file or directory
Caused by: java.io.IOException: Cannot run program “node”: error=2, No such file or directory
このエラーは、GradleビルドプロセスがNode.js実行ファイルを見つけられないことを示しています。iOSでは問題なく動作する場合でも、Android環境で頻繁に発生します。
主な原因
このエラーの主な原因は以下の通りです:
- Android Studioが適切な環境変数PATHを認識していない
- Node.jsのパスがシステムに正しく設定されていない
- NVM(Node Version Manager)を使用している場合のパス設定の問題
- Gradleの設定やキャッシュの問題
- Android Studio自体のバージョンや設定の問題
解決方法
以下に、効果的な解決方法を優先順位に従って紹介します。
1. ターミナルからAndroid Studioを起動する(最も効果的)
推奨
この方法が最も成功確率が高く、多くのユーザーで効果が確認されています。
ターミナルで以下のコマンドを実行してAndroid Studioを起動します:
# 標準的なインストールの場合
open -a /Applications/Android\ Studio.app
# JetBrains Toolbox version 1.xの場合
open -a ~/Applications/JetBrains\ Toolbox/Android\ Studio.app
# JetBrains Toolbox version 2.xの場合
open "Applications/Android Studio.app"
NVMを使用している場合は、Android Studioを起動する前に使用するNode.jsバージョンを設定してください:
nvm use 22.18.0 # または使用したいバージョン
open -a /Applications/Android\ Studio.app
2. Node.jsのシンボリックリンクを作成する
システム全体からNode.jsにアクセスできるようにシンボリックリンクを作成します:
sudo ln -s "$(which node)" /usr/local/bin/node
注意
NVMを使用している場合、Node.jsのバージョンを変更するたびにこのコマンドを再実行する必要があります。
3. Gradleデーモンを停止する
Gradleのキャッシュやデーモンが原因で問題が発生している可能性があります:
# Androidプロジェクトのandroidディレクトリで実行
./gradlew --stop
その後、Android Studioを再起動してGradleの同期を実行してください。
4. Android StudioのGradle JDK設定を変更する
Android Studioの設定で、Gradleが使用するJDKを変更します:
- Android Studioを開く
- Preferences → Build, Execution, Deployment → Build Tools → Gradle に移動
- "Gradle JDK"設定を変更:
- 埋め込みJDKから自分でインストールしたJDK(OpenJDK 17など)に変更
- またはJAVA_HOMEを使用するように設定
5. Gradleバージョンをアップグレードする
古いGradleバージョンが原因で問題が発生している可能性があります:
- File → Project Structure → Project に移動
- "Gradle Version"を6.9以上に変更
- 変更を適用してGradleの同期を実行
6. Android Studio自体をアップグレードする
古いバージョンのAndroid Studioに問題がある場合:
- Android Studioを最新バージョンにアップデートする
- 特にArctic FoxからBumblebeeやそれ以降のバージョンにアップグレードすると解決することが多い
7. パーミッション問題の解決(macOS)
Android Studioのprintenv
コマンドの実行権限がない場合:
sudo chmod +x /Applications/Android\ Studio.app/Contents/bin/printenv
その後、Android Studioを再起動します。
8. build.gradleにNode.jsパスを明示的に設定する
android/app/build.gradle
ファイルに以下のコードを追加します:
import groovy.json.JsonSlurper
project.ext.react = [
nodeExecutableAndArgs: [getNodePath()]
]
def getNodePath() {
def process = "which node".execute()
process.waitFor()
def nodePath = process.in.text.trim()
if (!nodePath) {
throw new GradleException("Node.js executable not found in PATH. Please ensure Node.js is installed.")
}
return nodePath
}
その他の対策
上記の方法で解決しない場合、以下の方法を試してください:
- キャッシュのクリア: File → Invalidate Caches / Restart
- コンピュータの再起動: 単純な再起動で解決することがあります
- Android Studioの再インストール: 設定ファイルの破損が疑われる場合
- 環境変数の確認:
.bashrc
、.zshrc
、.profile
にNode.jsのパスが正しく設定されているか確認
予防策
この問題を今後発生させないための予防策:
- 常にターミナルからAndroid Studioを起動する習慣をつける
- NVMを使用する場合は、プロジェクトごとに
.nvmrc
ファイルを作成してNode.jsバージョンを固定する - 定期的にAndroid StudioとGradleを最新バージョンに更新する
まとめ
"Cannot run program 'node'"エラーは、Android Studioの環境変数認識の問題が主な原因です。最も確実な解決方法はターミナルからAndroid Studioを起動することです。それでも解決しない場合は、Gradleの設定変更やAndroid Studioのアップデートなどを順に試してください。
React Nativeの開発環境は日々進化しているため、公式ドキュメントやコミュニティの最新情報も参照することをおすすめします。