What is the meaning of 'No bundle URL present' in react-native?
When I run a react-native project, I get a error no bundle URL present
, but I don't know what mistakes I do, I was very confused.
Solve the error No bundle URL present
by:
- Running the following command in your project root directory to delete the iOS build directory, and to kill other React Native sessions (assuming they're running on default port 8081) before re-building:
rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios
- Update your React Native workflow to avoid these error occur by combining the above combination of commands into an alias and appending it to your Bash config file .bashrc with this command:
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc
Now you can run React Native iOS build (without worrying about some of the common red error screens of death appearing) with a simple alias shortcut:
rni
I just ran into this problem as well (first time getting started with React Native). The problem disappeared when - while an ios simulation(react-native run-ios
) was running - I ran npm install
and then react-native run-ios
again. In the terminal window, it showed that it was bundling, and then the simulator showed the welcome screen.
Check this link for briefs after react-native init PropertyFinder
line try to use npm start
(This one works for me)
Close your simulator and the terminal. Open new one and go to your project, then upgrade your react-native like this:
react-native upgrade
Issue in: https://github.com/facebook/react-native/issues/5090
As instructed in the error message:
Agreeing to the Xcode/iOS license requires admin privileges, please run "sudo xcodebuild -license" and then retry this command.
...I ran the following command:
sudo xcodebuild -license
It works now.
I had the same error and was able to run the app only through Xcode. react-native run-ios
did not work. To resolve the issue you need to remove the build
folder at YOUR_PROJECT/ios/build/
. After this you should be able to run your app through react-native run-ios
again. Hope this helps.
Had same problem when I did bundle my app.
Check that your main.jsbundle
is targeted to your main Project
Reason:
This is because the app cannot find out the server (which serves the UI - by javascript code).
Solution:
- Make sure everything related to react native closed (not necessary, just to have clean start for my solution, after my explanation, you can figure out this is needed or not)
- run
npm run start
oryarn start
first - wait for this command done job (usually you will see
Loading dependency graph, done.
) - run
react-native run-ios/android
Explanation:
React Native comes with 2 parts:
- Native part
- Javascript part
Build commands:
react-native run-ios/android
is to build native part then deploy to devices and start app on devices (simulator/emulator/real device). This usually took 3~4 mins to finish.npm run start
oryarn start
is to build the javascript part and start the dev server to serve the built UI to the app. This usually took 30 secs to finish.
=> Normally, the javascript part finished first then the native part came later. (based on time they used).
=> this is only true for the first time build (fresh build).
=> for re-build:
The native part just took 10~15 secs to check changes and because no change for native part => done before the javascript part was built and served. (I am not sure the javascript part was rebuilt or not but it took long time than native part)
So that is why we had this issue, the app ran and required thing that did not exist yet.
Bonus:
react-native run-ios/android
will auto start the dev server for you.- That's why when you ran
react-native run-ios/android
right afterreact-native init <app_name>
, everything ran well. (because auto start feature and the time was took for fresh build as state above). - Other "removing" solutions worked because they forced rebuilding.
Time used on this answer was relative to my machine => may different on others.
This problem happens when you not allow unsecure connections via localhost, or maybe you tried to accept unsecure connections via http.
To fix this, add this on info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
</key>
For me the issue was it couldn't create the JS bundle. It doesn't state the error when building from Xcode so there is no way for you to know this. To find the error run the following command.
react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
For me the error was something with missing PureRenderMixin component. To which the solution can be found here: https://github.com/facebook/react-native/issues/13078. Basicly you have to manually install react@16.0.0-alpha.3. This can be done via running this command.
npm i --save react@16.0.0-alpha.3
This issue is now happening for everybody because newer versions of react alphas are being released (particularly alpha.5) and they are breaking react-native builds.
This is an issue with react-native v0.42.1. Try to close all terminal and XCode instances and run:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
What solved it for me:
- Open a terminal window
cd
intoYOUR_PROJECT/ios
- Remove the build folder with
rm -r build
- Run
react-native run-ios
again
Alternatively, you could open Finder, navigate to YOUR_PROJECT/ios
and delete the build
folder.
Then run react-native run-ios again
.
Source: Andrew Bancroft
I have found the easiest/quickest way to bypass this is to exit the app within the simulator (2 x Cmd + Shift + H
) and re-launch.
Solution -->
npm start
then open new Terminal and go to your project path and then hit
react-native run-ios
it works for me
check your network proxy , better shut it down.
or u should find an other way to maintain the packager server
It has happened to me as well, after restarting my mac. There's a launchPackager terminal window opening up when you run your app on the simulator. I closed that window and terminated the process (I also cloosed the simulator), then run again react-native run-ios and everything works fine.
In my case the problem was fixed by restarting the adb
server: adb kill-server && adb start-server
I had this issue happen for me as well...the issue was the packer wasn't running it seemed probably because my default shell was zsh. react-native tires to open a new terminal window and run .../node_modules/react-native/packager/launchPackager.command
but this didn't run. Manually running that (and keeping it running) fixed this for me.
check your 'localhost' key at NSExceptionDomains dict in info.plist
if it doesn't exist, it causes error.
Most of the cases this problem occurs when the DNS lookup / IP lookup fails to find localhost.
Solution :
Try adding the localhost ip to your etc host file.
you can add the below lines to your etc host file (/etc/hosts)
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 l . ocalhost
To confirm this is the issue you can hit the bundle url on safari (if you try it in chrome this will resolve but safari won't be able to resolve it). http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false
first close the simulator, then run these on terminal
npm install
react-native run-ios
Assuming that you are using nvm
and multiple versions of node installed, here is the solution:
- Say that you run
npm install -g react-native-cli
innode v6.9.5
. - Now make
node v6.9.5
as default by runningnvm alias default 6.9.5
- Now run
react-native run-ios
The problem is, you have multiple versions of node installed via nvm
and to install react-native-cli
you have switched or installed latest version of node, which is not marked as default node to point in nvm
yet. When you run react-native run-ios
this opens up another new terminal window in which default nvm
is not pointed to the node version where you have installed react-native-cli
. Just follow the above setup, I hope that should help.
I had this same issue. But my problem was my Mac and iPhone were not in same wifi network.
So ensure that they are all in same network and rebuild once again. If this is not the case, try the solutions mentioned by other members here.
Make sure launchPackage.command
are running in a terminal and try run again. It will build the bundle. It is kinda like webpack-dev-server.
- check your hosts that
127.0.0.1 localhost
is not delete - check that the network agent is not set up
- then
npm install
&react-native upgrade
to reset your project
I'm working with RN 0.49.5
.
I've tried lots of methods, but no one works. Finally i worked this out.
It's simple and easy.
Main idea is to change the localhost
to 127.0.0.1
, but it's not where the RN tells you. It's in RCTBundleURLProvider.m#- (BOOL)isPackagerRunning:(NSString *)host.
Changes of code:
oc
- NSString *host = ipGuess ?: @"localhost";
+ NSString *host = ipGuess ?: @"127.0.0.1";
This is ok for simulator. If it's device, just change the ip address to your machine's.
Be sure that your ATS settings are correct in .plist file.
You can find the file at /ios/smileyspinners/Info.plist
localhost must be defined as exception request target like this:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
*(dont forget to remove this on release version..)
It's because your client cannot reach your packager server.
If you are a Chinese Coder just as I am, I think you might using VPN get through the GFW. When your VPN tool is in 'Global Mode', all your request will travel through the world and cannot get localhost
Try 'Auto Proxy Mode'.
If you are not come from China, or your VPN setting is already 'Auto Proxy Mode', I suggest you shut down your packager server and try again.
another thing that working for me , is to open the project in xcode, and then clean and build it. usually it reruns the packaging server and solve the problem.
...another reason why this is happening is if you have installed Visual Studio Code React Native Tools but you keep trying to use react native in the terminal: it will work the first time but then it will stop and show you the red no bundle screen.
launching react native from vscode works perfectly instead...
For my use case, i had to remove node_modules directory and run npm install.
$ rm -rf node_modules (make sure you're in the ios project directory)
$ npm install
If you get error "dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58.dylib", do the following:
$ 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
Comments
Post a Comment