I'm new in react-native. I have run react native project on Ubuntu by using 'react-native run-android' command. And I got the error on emulator "Unable to load script from assets 'index.android.bundle'.Make sure your bundle is packaged correctly or you are running a package server."
-
Welcome to SO! Please see How to Ask a Good Question.rll– rll2017-06-20 09:10:09 +00:00Commented Jun 20, 2017 at 9:10
-
you can find your answer on stackoverflow.com/questions/44795384/…Honarkhah– Honarkhah2017-10-11 05:52:47 +00:00Commented Oct 11, 2017 at 5:52
-
make sure ADB is install and accessable in your pathHarry– Harry2019-03-20 11:29:42 +00:00Commented Mar 20, 2019 at 11:29
-
I was facing the same issue and it solves: queception.com/question.php?question=10Stack Overflow– Stack Overflow2019-04-18 11:17:04 +00:00Commented Apr 18, 2019 at 11:17
-
duplicate of stackoverflow.com/questions/59051365/…Moritz– Moritz2022-12-21 06:57:07 +00:00Commented Dec 21, 2022 at 6:57
13 Answers
I also got this and I resolved this using following commands in your project directory:
$ mkdir android/app/src/main/assets
$ react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
$ react-native run-android
3 Comments
Using npm version 4.3.0 react-native-cli version 2.01 react-native version 0.49.5
In project directory,
mkdir android/app/src/main/assetsreact-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/resreact-native run-android
The file name has changed from index.android.js to index.js
1 Comment
In my case (embedding React Native as a new Activity into an existing Android Code Base), the problem was Android Studio had auto-imported the wrong BuildConfig.
Wrong:
import com.facebook.react.BuildConfig;
Right:
import com.mywebdomain.myapp.BuildConfig;
This would apply to the wherever you are housing this block of code:
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
2 Comments
This helped me resolve the problem in following steps.
If not than (in project directory) mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/resreact-native run-android
Comments
For this error :
unable to load script from assets 'index.android.bundle'
1) Check for "assets" folder at :
mkdir android\app\src\main\assets
If the folder is not available, create a folder with name "assets" manually. and execute the Curl command in terminal.
2). Curl command:
curl "http://localhost:8081/index.android.bundle?platform=android" -o"android/app/src/main/assets/index.android.bundle"
It will create the "index.android.bundle" file in assets folder automatically and resolved the issue.
3) Then:
react-native run-android
Comments
Ubuntu
first time, I created new app with react-native init project-name. I got the same error. so i do the following steps to resolve this in my case.
- Firstly run
sudo chown user-name-of-pc /dev/kvmin my case. - While debugging from your Android phone, select
Use USB to Transfer photos (PTP). - Create Folder assets in 'project-name/android/app/src/main'.
- make sure
index.jsbe avaiable into your projectrootdirectory and then run below command from console aftercd project-namedirectory.
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
or for index.android.js then
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
- run command
./studio.shinandroid-studio/bindirectory. It will opens up Android Studio. - run command
react-native run-android.
Comments
It seems to be a problem in the newest version of React Native (0.46). Using the previous version seems to solve the problem react-native init name --version [email protected] and removes the error when running react-native run-android.
Edit: It is now fixed in version 0.46.1.
Comments
For Windows user only:
- Copy the path of adb location and set into
PATHin your system variable, - Open project structure and delete node module folder.
- Edit your project
package.JSONfile change react-native version"react-native": "0.55.2", and babel"babel-preset-react-native": "4", after that runnpm install - Restart cmd and js server and run your react native project by
react-native run-android
Comments
I was stuck in the same problem for hours and what solved my issue is this :
Create "assets" folder in main directory of project as well as in "newreactproject\android\app\src\main". Then put this script in package.json "android-android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
like:
"name": "newreactproject",
"version": "0.0.1",
"private": true,
"scripts": {
"android-android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android",
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
}
Comments
i'm using ubuntu 18.04 LTS ,react-native: 0.55.2. In my case here are few solutions for the problem .
in the terminal before you run npm run android type npm start. you might see an error ERROR Metro Bundler can't listen on port 8081. this occurs because there might be a process which is already running
Solution- type
sudo lsof -i :8081you will see an output similar to this
**COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 5670 tasif 17u IPv6 80997 0t0 TCP *:tproxy (LISTEN)**type
kill -9 (PID number)thenrun npm android.if it still doesnt work type again npm start . you might see this error
E
RROR ENOSPC: no space left on device, watch'....../......./.....'solution :
$
sudo sysctl fs.inotify.max_user_watches=524288$
sudo sysctl -pthen type
npm run android.please go to this link to see different solutions and more details https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details
delete the emulator and build it again. kill the recent terminal and then build emulator and start again.
Comments
I discovered a solution suggested in the thread at https://github.com/facebook/react-native/issues/15388
It is to manually set the Debug server host & port for device setting for the app on the phone.
Step by Step to eject and run a CRNA on Android
In terminal:
create-react-native-app myAppcd myAppyarn run eject(I used default options "regular React Native project")react-native run-android
(now the app should be compiled and installed on the phone)
On phone:
- Run the app (expect to see the red error screen! - click Dismiss button in bottom left)
- Shake the phone and pick Dev Settings
- Pick Debug server host & port for device and set to 192.168.x.x:8081 (make it your actual LAN IP of course)
- Restart app on phone and you should see green bar at the top "Loading from 192.168.x.x:8081..."
- You should also see some "Bundling
index.js" action in the Metro Bundler (that opened when runningreact-native run-android) - After the bundle is finished, the app should be running on your Android device!
Live Reload (when source files change) also works - just shake the phone and touch "Enable Live Reload"
You can run the project from Android Studio, but you need to first start the Metro Bundler with the command react-native start in the CRNA project root.