次の方法でエラーNo bundle URL present
を解決してください。
rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc
今、あなたはReact Native iOSビルドを実行することができます(死の一般的な赤いエラー画面が表示されることを心配せずに)、簡単なエイリアスショートカットで:
rni
私はこの問題にも遭遇したばかりです(初めてReact Nativeを使い始める)。 iosシミュレーション(react-native run-ios
)の実行中に問題が解決しました - npm install
を実行してからreact-native run-ios
を再度実行しました。端末ウィンドウでは、バンドルしていることが示され、その後シミュレータはウェルカム画面を表示しました。
このリンクで概要を確認してくださいreact-native init PropertyFinder
行の後にnpm start
を使用してみてください(これは私にとって役に立ちます)。
シミュレータと端末を閉じます。新しいプロジェクトを開き、プロジェクトに移動してから、次のように反応ネイティブをアップグレードします。
react-native upgrade
エラーメッセージの指示に従って。
Xcode/iOSライセンスに同意するには管理者権限が必要です。 "Sudo xcodebuild -license"を実行してからこのコマンドを再試行してください。
...私は次のコマンドを実行しました:
Sudo xcodebuild -license
今うまくいきます。
この問題は、localhostを介した安全でない接続を許可しない場合、またはhttpを介した安全でない接続を受け入れようとした場合に発生します。
これを修正するには、これをinfo.plist
に追加します。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
</key>
理由:
これは、アプリがサーバーを見つけることができないためです(これはUIを提供します - JavaScriptコードによる)。
溶液:
npm run start
またはyarn start
を実行Loading dependency graph, done.
と表示されます)react-native run-ios/Android
を実行説明:
React Nativeには2つの部分があります。
ビルドコマンド:
react-native run-ios/Android
はネイティブパーツを構築してからデバイスにデプロイしてデバイス上でアプリを起動することです(シミュレータ/エミュレータ/実際のデバイス)。これは通常完了するのに3〜4分かかりました。
npm run start
またはyarn start
は、javascriptパーツをビルドしてdevサーバーを起動し、ビルドされたUIをアプリに提供することです。これは通常終了するのに30秒かかりました。
=>通常、javascriptの部分が最初に終わり、次にネイティブの部分が遅くなります。 (彼らが使用した時間に基づく)。
=>これは最初のビルド(フレッシュビルド)にのみ当てはまります。
=>再構築の場合:
ネイティブ部分は変更をチェックするのに10〜15秒かかりました。ネイティブ部分の変更はJavaScript部分が構築されて提供される前に行われなかったからです。 (私は、JavaScriptの部分が再構築されたかどうかわからないが、それはネイティブの部分よりも長い時間がかかりました)
だから我々はこの問題を抱えていた理由は、アプリが実行され、まだ存在していないものを必要としていました。
ボーナス:
react-native run-ios/Android
はdevサーバーを自動起動します。react-native run-ios/Android
の直後にreact-native init <app_name>
を実行したとき、すべてがうまくいったのはそのためです。 (自動起動機能と上記の状態でフレッシュビルドに時間がかかったため)。この答えで使われた時間は私のマシンの相対的なものです=>.
私は同じエラーがあり、Xcodeを介してのみアプリを実行することができました。 react-native run-ios
は動作しませんでした。この問題を解決するには、YOUR_PROJECT/ios/build/
のbuild
フォルダーを削除する必要があります。この後、あなたは再びreact-native run-ios
を通してあなたのアプリを実行することができるはずです。お役に立てれば。
このコードを実行してみてください---
Sudo xcodebuild -license
これで問題が解決する可能性があります。これは私のために働きます。
何が私のためにそれを解決しました:
cd
をYOUR_PROJECT/ios
にrm -r build
でビルドフォルダを削除しますreact-native run-ios
をもう一度実行してくださいあるいは、Finderを開き、YOUR_PROJECT/ios
に移動してbuild
フォルダを削除することもできます。
それからreact-native run-ios again
を実行してください。
出典: アンドリュー・バンクロフト
解決策 - > npm start
それから新しいTerminalを開いてあなたのプロジェクトパスに行って、それからreact-native run-ios
を押してください。
ATS設定が.plistファイルで正しいことを確認してください。
ファイルは /ios/{{project_name}}/Info.plist にあります。
localhostは、次のように例外要求の対象として定義する必要があります。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
*(リリース版ではこれを削除するのを忘れないでください。)
ほとんどの場合、この問題はDNSルックアップ/ IPルックアップがlocalhostを見つけられないときに発生します。
解決策:
あなたのetcホストファイルにlocalhost ipを追加してみてください。
以下の行をあなたのetcホストファイル(/ etc/hosts)に追加することができます。
127.0.0.1 localhost
255.255.255.255ブロードキャストホスト
:: 1リットル。オカロス
これが問題であることを確認するには あなたはsafariのバンドルURLを打つことができます(あなたがクロムでそれを試みるならこれは解決するでしょうが、safariはそれを解決することができません)。 http:// localhost:8081/index.ios.bundle?platform = ios&dev = true&minify = false
私にとって問題は、JSバンドルを作成できなかったことです。 Xcodeからビルドするときにエラーが表示されないので、これを知る方法はありません。エラーを見つけるには、次のコマンドを実行してください。
react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
私にとっては、エラーはPureRenderMixinコンポーネントが欠けているというものでした。解決策はここで見つけることができます: https://github.com/facebook/react-native/issues/13078 。基本的にはreact @ 16.0.0-alpha 3を手動でインストールしなければなりません。これは、このコマンドを実行して実行できます。
npm i --save [email protected]
この問題は誰にでも起きています。新しいバージョンの反応性アルファ(特にアルファ5)がリリースされ、反応性ビルドを壊しているからです。
これはreact-native v0.42.1の問題です。すべての端末とXCodeインスタンスを閉じて実行してみてください。
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
これを回避する最も簡単な方法は、シミュレータ内でアプリを終了し(2 x Cmd + Shift + H
)、再起動することです。
最初にシミュレータを閉じてから、端末上でこれらを実行してください。
npm install
react-native run-ios
info.plistに記述されているNSExceptionDomains辞書の「localhost」キーを確認してください。
存在しない場合はエラーになります。
私の場合、問題はadb
サーバーを再起動することで解決されました:adb kill-server && adb start-server
ネットワークプロキシを確認して、シャットダウンしてください。
または、パッケージャサーバを管理するための他の方法を見つけるべきです。
私はこの問題も私のために起こっていました...問題はおそらくパッカーがそれを実行していなかったということが私のデフォルトのシェルがzshだったことのように思えました。 react-nativeは、新しいターミナルウィンドウを開いて.../node_modules/react-native/packager/launchPackager.command
を実行するのに疲れますが、これは実行されませんでした。それを手動で実行して(そして実行し続けて)これを修正しました。
私のMacを再起動した後、それは私にも起こった。シミュレータでアプリを実行すると、launchPackagerターミナルウィンドウが開きます。私はそのウィンドウを閉じてプロセスを終了させ(私もシミュレータを閉じました)、次にreact-native run-iosを再度実行してもすべてうまくいきます。
私はこれと同じ問題を抱えていました。しかし、私の問題は私のMacとiPhoneが同じwifiネットワークになかったことでした。
そのため、それらがすべて同じネットワーク内にあることを確認して、もう一度再構築してください。そうでない場合は、ここで他のメンバーによって言及された解決策を試してください。
nvm
を使用しており、複数のバージョンのノードがインストールされていると仮定すると、これが解決策です。
npm install -g react-native-cli
の中でnode v6.9.5
を実行したとしましょう。node v6.9.5
を実行してnvm alias default 6.9.5
をデフォルトにします。react-native run-ios
を実行してください問題は、nvm
経由でインストールされたノードの複数のバージョンがあり、react-native-cli
をインストールするには、nvm
を指すようにデフォルトノードとしてマークされていない最新バージョンのノードを切り替えまたはインストールしたことです。 react-native run-ios
を実行すると、デフォルトのnvm
がreact-native-cli
をインストールしたノードのバージョンを指していない別の新しいターミナルウィンドウが開きます。上記の設定に従ってください、私はそれが役立つはずです。
ターミナルreact-native start
で実行するだけです。
cd your react native app directory/ react-native start
それはパッケージャを起動します、今このターミナルウィンドウを閉じないでください、あなたのプロジェクトを実行する別のターミナルウィンドウで。これは私がそれをきちんと動かしてもらうために見つけた唯一の欲求です。
launchPackage.command
が端末で実行されていることを確認して、もう一度実行してください。それはバンドルを構築します。それはちょっとwebpack-dev-serverのようです。
以下のコマンドを実行します。
killall -9 node
rm -rf ios/build
react-native run-ios
launchpackager.commandが開き、アプリケーションがiOSシミュレーターにインストールされます
私のために働くもう一つのことは、xcodeでプロジェクトを開き、そしてそれをきれいにして構築することです。通常はパッケージングサーバを再実行して問題を解決します。
私は私のMacBookのケーブルと無線LANでネットワークに接続し、無線LANを無効にして、ただ走るだけでうまくいきました!
これを回避するために、RNのドキュメントでデバッグビルドを高速化するために追加したビルドスクリプトのSKIP_BUNDLINGオプションを削除しました。本当の修正(私達の原因による)はRN 0.57に含まれています。
これは私のために働きます。結果として、本番目的でiOSのplistファイルからこの行を削除しました。シミュレータはバンドルファイルを取得できませんでした。 https://medium.com/@joshuakuhar/no-bundle-url-present-69333bb5da42
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
私はRN 0.49.5
を使っています。私はたくさんの方法を試したが、だれも動かない。最後に私はこれを解決しました。それはシンプルで簡単です。
主なアイデアはlocalhost
を127.0.0.1
に変更することですが、RNがあなたに言うところではありません。 RCTBundleURLProvider.m# - (BOOL)isPackagerRunning:(NSString *)Host にあります。
コードの変更:oc - NSString *Host = ipGuess ?: @"localhost"; + NSString *Host = ipGuess ?: @"127.0.0.1";
これはシミュレータには問題ありません。それがデバイスの場合は、単にあなたのマシンのものにIPアドレスを変更してください。
127.0.0.1 localhost
が削除されていないことをホストに確認してくださいnpm install
&react-native upgrade
私のユースケースでは、node_modulesディレクトリを削除してnpm installを実行する必要がありました。
$ rm -rf node_modules (make sure you're in the ios project directory)
$ npm install
「dyld:ライブラリがロードされていません:/usr/local/opt/icu4c/lib/libicui18n.58.dylib」というエラーが表示された場合は、次の手順を実行してください。
$ brew uninstall --force node --ignore-dependencies node
$ brew uninstall icu4c --ignore-dependencies icu4c
$ brew install icu4c
$ brew unlink icu4c && brew link icu4c --force
$ brew install node
$ npm install
export FORCE_BUNDLING=true
は私のために働きました。バンドルされていないことをコンソールに警告がありました。
私は以下のすべての解決策を試したが、何もうまくいかない:
Sudo xcodebuild -license
またはrm -r build
でビルドフォルダを削除してreact-native run-ios
を実行するnpm start
を実行してreact-native run-ios
を実行NSAppTransportSecurity
を `に追加します私はこれをやって解決した:
Sudo vi /private/etc/hosts
を開きます(VSCodeを使用している場合は、このSudo code /private/etc/hosts
を使用します)。127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
react-native run-ios
をもう一度実行してください。これは、おそらくMetro Bundler Windowを閉じているか、クラッシュする可能性があるためです。プロジェクトディレクトリで別の端末/ cmdを開き、npm start
を実行するだけです。 npm start
React Nativeを実行すると、MetroBundlerウィンドウが再び起動します。バンドラーがBUNDLE
プロセスを終了したら、アプリケーションをリロードするだけで準備完了です。
あなたのクライアントがあなたのパッケージャサーバにアクセスできないからです。
私と同じようにあなたが中国のコーダーであるならば、私はあなたがGFWを通過するVPNを使うかもしれないと思います。あなたのVPNツールが「グローバルモード」にあるとき、あなたの要求はすべて世界中を行き来し、localhostを取得することはできません。
「自動プロキシモード」を試してください。
あなたが中国から来ていないか、あなたのVPN設定がすでに 'Auto Proxy Mode'になっているならば、私はあなたがあなたのパッケージャサーバをシャットダウンしてやり直すことを勧めます。
私は同じ問題に直面し、AppDelegate.mファイルを変更することで解決しました。私が変更され
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
に
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
そしてそれは私のために働いた:)
この問題は、nvmによって管理されているノードのバージョンが複数あり、デフォルトバージョンがreact-nativeを実行するためのバージョンではない場合に発生する可能性があります。 (ノード8.3以降であることを確認してください)
反応ネイティブのrun-ios
新しい端末を開き、$ PATHにあるバージョンのノードを実行します。
React nativeでサポートされていない古いバージョンのノードが見つかった場合は、このエラーが発生する可能性があります。
新しい端末が開かれたときに、$ PATH変数がすでに目的のバージョンのノードを指していることを確認してください(ノード8.3以降であることを確認してください)。
これで問題は解決しました。がんばろう。
...これが起こっているもう一つの理由は、あなたがVisual Studio Code React Native Tools をインストールしていても端末で反応ネイティブを使おうとし続けている場合です。あなたに赤いno bundle画面を見せてください。
vscodeからネイティブに反応するの起動は、代わりに完璧に動作します...
この問題は、Metro bundlerが起動し、別のウィンドウでキーボードで入力しているときにフォーカスを受け取ったために発生しました。新しく開いたターミナルウィンドウに誤って入力すると、Metro bundlerがクラッシュしました。 react-native run-ios
と辛抱強く待っているを再実行すると修正されました。
YOUR_PROJECT/iosにターミナルウィンドウを開きますrm -r buildでビルドフォルダーを削除します
その後、プロジェクトをXcodeで開き、1回実行します。サーバーを起動して実行し、main.jsbundleファイルを作成します。
これで、react-native run-iosを端末から再度実行すると、期待どおりに動作します。
それが役立つことを願っています!.
グローバルプロキシ(シャドウソック)をオフにする
これが私のやり方です。
これを追加してみてください。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
プロジェクトに.jsbundleがあることを確認してください
追加する
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
反応するネイティブコードでプロジェクトを再度開いてみてください