コマンドを実行するとreact-native start
、が表示されますPackager can't listen on port 8081
。
問題は、ポート8081を使用するソフトウェアに関するものです。
リソースモニターを使用してポートを確認しましたが、8081が見つかりません。8081がありません。
誰かがそれを見つける方法を教えてもらえますか?
回答:
このエラーは、一部のプロセスがすでに8081ポートで実行されているために発生します。そのプロセスを停止してからコマンドを実行すると、コードが実行されます。この最初のリストでは、次のように入力して、このポートを使用しているすべてのプロセスをリストします。
lsof -i :8081
このコマンドは、プロセスのプロセスID(PID)を一覧表示し、を使用してノードプロセスを強制終了します。
kill -9 <PID>
ここで、PIDはノードプロセスのプロセスIDです。
その写真は確かにあなたの8081が使用されていないことを示しています。上記の提案が役に立たず、モバイルデバイスがUSB経由でコンピューターに接続されている場合(およびAndroid 5.0(Lollipop)以降を使用している場合)、次のことを試すことができます。
$ adb reconnect
これはほとんどの場合必要ありませんが、念のため、モバイルとの接続をリセットして、adbサーバーを再起動しましょう。最後に:
$ adb reverse tcp:8081 tcp:8081
したがって、モバイルデバイスがそれ自体のポート8081にアクセスしようとすると、PCの8081ポートにルーティングされます。
または、試すことができます
$ killall node
Ubuntu / Unix && MacOS
Metro Bundlerがスタックし、多くのノードプロセスが実行されていましたが、react-native以外の開発は行われていなかったため、次のように実行しました。
$ killall -9 node
Metro Bundlerは、デフォルトでポート8081のノードを介して実行されており、スタックする問題が発生する場合があります(通常、ホットリロードをオンにしてCTRL+Sをすばやく続けて押すことが原因です)。CTRL+Cを押してreact-native run-android
プロセスを強制終了するreact-native-run-android
と、スタックするため、突然悪い時間が発生します。
Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)
修正:
$ killall -9 node
$ react-native run-android
注:その時点で他のアプリを開発している場合、すべてのノードプロセスを強制終了すると、それらのアプリまたは実行中のノードベースのサービスが中断される可能性があるため、の抜本的な性質に注意してくださいkillall -9
。ノードベースのデータベースまたはアプリを実行していない場合、または手動で再起動してもかまわない場合は、問題ありません。
私がこの半無関係の質問にこの詳細な答えを残す理由は、私のものが一般的な半関連の問題の解決策であり、悲しいことに修正するのに2つのステップが必要ですが、幸いにも2つのステップで仕事に戻ることができるからです。
ポート8081のMetroBundlerのゴミを外科的に正確に除去したい場合は、次の回答の手順を実行してください。 MetroBundler RC_02。
$ sudo lsof -i :8081
$ kill -9 23583
(23583はプロセスIDです)
ターミナルを取り、タイプします
fuser 8081/tcp
ポート8081を使用しているプロセスIDを取得します。プロセスを強制終了します。
kill <pid>
マシンで実行されているノードサーバーがすでに存在するかどうかを確認してから、それを閉じます。
私の場合、エミュレーターにWi-Fi信号がないため、エミュレーターのインターネットがダウンしています。エミュレータのリセットが機能しました。
まず、デバイスでDevに移動します。オプション-> ADB over Network を実行した後:
$ adb connect <your device adb network>
$ react-native run-android
(または、ちなみに、run-ios)
これで正常にデバイスにapp-debug.apkがインストールされた場合は、app-debugを開いてDevに移動します。設定->デバイスのサーバーホストとポートをデバッグし、以下の例のように、マシンのIPアドレス(通常はシステム設定->ネットワーク)を入力します<マシンのIPアドレス> :8081(不等式なし)
最後に、以下のコマンドを実行します
$ react-native start --port=8081
別のポートを試して、マシンとデバイスが同じネットワークであることを確認してください。