Androidのexpoアプリでcreate-react-native-appを実行しようとしています。
まず、コマンドを書いてプロジェクトを作成しました
create-react-native-appテスト
それから私は実行しました
npm start
その後、expoアプリからqrコードをスキャンしました。
しかし、QRコードをスキャンした後、次のエラーが発生しています:
Uncaught Error: Java.net,sockettimeoutException: failed to connect to after 10000ms
Githubの問題:
https://github.com/react-community/create-react-native-app/issues/144#issuecomment-296631692
これは、マシンからポートを開かないためです。
Ubuntu Run Inターミナルで
Sudo ufw status verbose
19000ポートが開いていない場合に開いているポートを表示するには、次を使用してポートを開く必要があります。
Sudo ufw allow 19000/tcp
そして、再び実行します
Sudo ufw allow 19001/tcp
ネイティブに反応するためにhttpを提供するには、この方法を使用してubuntuでこの問題を解決します。これがあなたのお役に立てば幸いです。
TCPアクセス用にWindowsファイアウォールのポートを開くにはStartメニューで、Run
をクリックし、WF.msc
をクリックし、OK
をクリックします。
セキュリティが強化されたWindowsファイアウォールの左ペインで、インバウンドルールをクリックし、アクションウィンドウでNew Rule
をクリックします。
Rule Typeダイアログボックスで、Portを選択し、Nextをクリックします。
Protocol and Portsダイアログボックスで、TCPを選択します。 Specific local portsを選択し、19000などのReactポートのインスタンスのポート番号を入力しますデフォルトのインスタンスの場合。 Nextをクリックします。
アクションダイアログボックスで、接続を許可を選択し、次へ。
Profileダイアログボックスで、データベースエンジンに接続するときのコンピューター接続環境を記述するプロファイルを選択し、Next。
Nameダイアログボックスで、このルールの名前と説明を入力し、Finishをクリックします。
同様に、ポート19001も開くことができます。
私の場合、ファイアウォールの設定だけではできませんでした。私の問題は、VirtualBoxネットワークデバイスが優先され、Expoホストが間違ったネットワークで起動していたことです。
Windowsでは、ipconfig
を実行して、使用しているネットワークアダプターを確認できます。 npm
/yarn start
は、そのリストで最初に表示されるものをすべて使用するようです。
私はここからこれについて知りました: https://github.com/react-community/create-react-native-app/issues/6
リスト内の他のネットワークアダプターが必要ない場合は、コントロールパネルの[ネットワーク接続]インターフェイスでそれらを無効にできます。
これらの接続およびを使用する必要がある場合は、Expoを使用して問題を解決します このプロセス :
- ジャンプコントロールパネル>ネットワークとインターネット>ネットワーク接続
- 目的の接続(優先度の高い接続)を右クリックします
- [プロパティ]> [インターネットプロトコルバージョン4]をクリックします
- [プロパティ]> [詳細]をクリックします
- 「自動メトリック」のチェックを外します
- 「インターフェースメトリック」に10を入力します
- OKをクリック
優先度の低い接続についても繰り返しますが、今回は「インターフェースメトリック」に20を入力します
これで、優先度の高い接続をデフォルトとして使用します。
それを回避するには、ラップトップのIPアドレスを静的IPに修正します(たとえば、192.168.1.69)。次に、次を使用して、反応するネイティブパッケージャーのIPアドレスをラップトップのIPアドレスに変更する必要があります。
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
プロジェクトを再度開始すると、準備完了です。
windowsで
コマンドプロンプトでipconfig
を実行します
ip4アドレスを取得してコピーします。
行くより
REACT_NATIVE_PACKAGER_HOSTNAME
npm start
を実行します
ネイティブに反応するためにexpoアプリケーションをインストールすることをお勧めします。リンクは 公式ガイドはこちら
npm install -g exp
次に、Genymotionソフトウェアを使用して、実行するアプリのさまざまな環境設定をエミュレートできます。
exp start
ターミナルで「npm start」を使用してネイティブのリアクションを使用する場合、次のようになります。アプリケーションがコンピューターのIpVアドレスを正常に実行すると、ターミナルに表示されるものとExpoアプリ上にあるものが同一であることがわかりました。たとえば、
ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.124
exp://10.0.0.124:19000
この観察に基づいて、次の方法でこの問題を解決しました。
ターミナルでコマンドを実行してIPを見つけます:
ipconfig
IPを使用してNodeJSコマンドプロンプトでコマンドを実行します(たとえば10.0.0.124)
set REACT_NATIVE_PACKAGER_HOSTNAME=10.0.0.124
Expoアプリを起動し、バーコードをスキャンします
npm start
解決しない場合は、他の合理的な努力に加えて、React開発者が推奨する次の手順を使用します。
誰かがまだ答えを探している場合に備えて。最初に基本的なことを行い、最初にネットワーク構成を開いてVirtualBox Host-Only Network
を無効にします。これは私のために働いた。
コンテキストで言及されていることはすべて完了しました。接続したWiFiネットワークをパブリックからプライベートに変更しました。これは私のために働いた
開発にgit bashを使用している場合、Icruz4によるこのソリューションが役立ちます
の代わりに
set REACT_NATIVE_PACKAGER_HOSTNAME
つかいます:
export REACT_NATIVE_PACKAGER_HOSTNAME='192.168.1.123'
注意:
走るとき
npm start
Expoは、出力で使用しているIPを示します。そのIPが必要なIPでない場合、
REACT_NATIVE_PACKAGER_HOSTNAME
環境変数が正しく設定されていません
他の回答が示唆するすべてを試してもまだ機能しない場合は、コンピューターと電話が同じWIFIネットワークに接続されていることも確認してください。私にとってこれは1時間の無駄です。
私の場合、Expo Androidアプリには「他のアプリの上に描画する "- 許可そして私はそれを与えなかった。だから私はExpoアプリにこの許可を与え、問題は解決した。
この問題は次の方法で解決できる可能性があります。
または
ネットワークアダプターのインターフェイスマトリックスの優先度の割り当て 詳細な指示 here または here .
または
変更を行った後、動作するかどうかをテストする前にコンピューターを再起動してください。
幸運を!
最もシンプルで100%実用的なソリューションの1つは次のとおりです。
次に、コマンドターミナルを開き、次を実行します。
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
私は多くの解決策を試しましたが、この方法だけがこの問題を解決するのに役立ちました:
Windowsの場合:
Sudo exp start
と入力すると、expoアカウントのログイン詳細が表示されます。Window Firewallでポートを開くだけで、すべてが機能するはずです。
1. [スタート]メニューの[ファイル名を指定して実行]をクリックし、WF.mscと入力して[OK]をクリックします。
セキュリティが強化されたWindowsファイアウォールの左側のウィンドウで、[受信の規則]を右クリックし、操作ウィンドウで[新しい規則]をクリックします。
[ルールの種類]ダイアログボックスで、[ポート]を選択し、[次へ]をクリックします。
[プロトコルとポート]ダイアログボックスで、[TCP]を選択します。 [特定のローカルポート]を選択し、Reactポートのインスタンスのポート番号を入力します(既定のインスタンスの場合は19000など)。次へをクリックします。
[アクション]ダイアログボックスで、[接続を許可する]を選択し、[次へ]をクリックします。
[プロファイル]ダイアログボックスで、データベースエンジンに接続するときのコンピューター接続環境を説明するプロファイルを選択し、[次へ]をクリックします。
[名前]ダイアログボックスで、このルールの名前と説明を入力し、[完了]をクリックします。
同様に、ポート19001も開くことができます。
Windowsでは、
set REACT_NATIVE_PACKAGER_HOSTNAME=my-ip-address
git bashターミナル内で動作しましたが、cmdでは動作しませんでした。 git bashで、npm startを実行した後、ファイアウォールのポップアップが表示されたので、それをクリックして許可をクリックしました。