Skip to content

TypeError: cli.init is not a function の解決方法

React Nativeで新しいプロジェクトを作成しようとする際に TypeError: cli.init is not a function エラーが発生することがあります。この問題はReact NativeのCLIのバージョン互換性やグローバルインストール時の競合が主な原因です。

問題の原因

このエラーは以下の状況で発生します:

  • 古いバージョンの react-native-cli がグローバルにインストールされている
  • 複数のCLIパッケージが競合している
  • React Nativeのバージョン互換性の問題

エラーメッセージ例:

bash
TypeError: cli.init is not a function
at run (/opt/homebrew/lib/node_modules/react-native-cli/index.js:302:7)

解決方法

方法1:最新のReact Native Community CLIを使用する(推奨)

現在、React Native公式ではコミュニティCLIを使用することを推奨しています:

bash
npx @react-native-community/cli@latest init AwesomeProject

この方法が最も信頼性が高く、公式ドキュメントでも推奨されています。

方法2:グローバルパッケージのクリーンアップ

WARNING

古いグローバルパッケージが残っていると競合が発生します。以下のコマンドで完全に削除してください。

Node.jsのパッケージマネージャーに応じて、以下のコマンドを実行します:

bash
# グローバルパッケージの確認
npm list -g --depth=0

# 古いCLIパッケージのアンインストール
npm uninstall -g react-native-cli @react-native-community/cli react-native

# 新しいCLIのインストール
npm install -g @react-native-community/cli

# プロジェクト作成
npx @react-native-community/cli@latest init AwesomeProject
bash
# グローバルパッケージの確認
yarn global list

# 古いCLIパッケージのアンインストール
yarn global remove react-native-cli @react-native-community/cli react-native

# 新しいCLIのインストール
yarn global add @react-native-community/cli

# プロジェクト作成
yarn react-native init AwesomeProject
bash
# Homebrewでインストールした場合の削除
brew uninstall react-native-cli

方法3:特定のバージョンを指定してインストール

一時的な回避策として、安定版の特定バージョンを指定する方法もあります:

bash
npx react-native init ProjectName --version 0.68.2

ただし、これは一時的な解決策であり、最新バージョンへのアップグレードを推奨します。

ベストプラクティス

  1. グローバルインストールを避ける: 最新のReact NativeではグローバルCLIの必要性が低下しています
  2. npxを使用: 常に最新バージョンのCLIを使用できます
  3. 公式ドキュメントを参照: React Native環境設定ガイドに従ってください

トラブルシューティング

上記の方法で解決しない場合:

  1. Node.jsのキャッシュをクリア:
bash
npm cache clean --force
  1. node_modulesディレクトリとpackage-lock.jsonを削除:
bash
rm -rf node_modules package-lock.json
npm install
  1. Node.jsとnpm/yarnを最新バージョンにアップデート

まとめ

TypeError: cli.init is not a function エラーは、主に古いCLIパッケージの競合が原因です。最も効果的な解決方法は、公式推奨の @react-native-community/cli を使用することです。プロジェクトを作成する際は、常に最新の公式ドキュメントを参照することをお勧めします。

INFO

React Nativeの開発環境は頻繁に更新されるため、定期的に環境のメンテナンスを行い、古いパッケージをクリーンアップしましょう。