After running npm run eject de android project cannot resolve ReactApplication and ReactNativeHost and it does not compile.
I can compile the android project generated by npm run eject and execute it in the androi emulator
The project has some errors in the imports, like ReactApplication or ReactNativeHost. The MainActivity does not implement the method getUseDeveloperSupport() that is required as it extends ReactActivity
Please run these commands in the project folder and fill in their results:
npm ls react-native-scripts: emptynpm ls react-native: [email protected]npm ls expo: emptynode -v: v8.11.3npm -v: 5.6.0yarn --version: 1.9.4watchman version: The term 'watchman' is not recognized as the name of a cmdletAlso specify:
$ npm install -g expo-cli
$ expo init my-app
$ cd my-app/
$ npm run eject
Then open Android Studio and try to compile the Android project generated after npm eject
Same issue, I tried to not use expo CLI and use :
react-native eject
(with defining app.json)
and I have the same issue
Same issue using both new syntax (expo cli) and old
I ran into this problem as well. It took a few days of searching to realize that there are several issues after ejecting. Here's the things that worked for me.
One issue can be with react-native 0.56.* in the project after ejecting. It looks like you have 0.54.0 which works fine but if you don't then consider downgrading for now. See this issue here https://github.com/react-community/create-react-native-app/issues/401
After ejecting in package.json react-native is listed as this "react-native": "https://github.com/expo/react-native/archive/sdk-30.0.0.tar.gz" which doesn't seem to work.
To downgrade to [email protected]
You can do this by removing your node_modules, changing your package.json to use [email protected]
"dependencies": {
"react": "16.3.1",
"react-native": "0.55.4"
}
and then reinstalling node_modules with npm install or yarn install if using yarn.
The second issue is that you'll need to check in your android/build.gradle and make sure that Google's Maven repository google() is included in both buildscript {} and allprojects{}. By default it's missing after eject. This is only the case if using a Gradle version > 4.1 though.
Something like this (although yours might look slightly different)
buildscript {
repositories {
google()
jcenter()
}
dependencies {
...
}
}
allprojects {
repositories {
google()
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
In addition it seems that index.js, index.android.js and index.ios.js are not created when ejecting anymore. So check for those and if they aren't there at least create index.js in the project root and add the following to it to get started.
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('the_name_of_your_ejected_app', () => App);
I've just gone through these steps again on a new app and confirmed that they fix the issues.
I think it's because there is no index.js file after eject. Still, there is no update to .gitignore after eject too.
This issue still exists!
Most helpful comment
I ran into this problem as well. It took a few days of searching to realize that there are several issues after ejecting. Here's the things that worked for me.
One issue can be with react-native 0.56.* in the project after ejecting. It looks like you have
0.54.0which works fine but if you don't then consider downgrading for now. See this issue here https://github.com/react-community/create-react-native-app/issues/401After ejecting in
package.jsonreact-native is listed as this"react-native": "https://github.com/expo/react-native/archive/sdk-30.0.0.tar.gz"which doesn't seem to work.To downgrade to [email protected]
You can do this by removing your node_modules, changing your
package.jsonto use[email protected]and then reinstalling node_modules with
npm installoryarn installif using yarn.The second issue is that you'll need to check in your
android/build.gradleand make sure that Google's Maven repositorygoogle()is included in bothbuildscript {}andallprojects{}. By default it's missing after eject. This is only the case if using a Gradle version > 4.1 though.Something like this (although yours might look slightly different)
In addition it seems that
index.js,index.android.jsandindex.ios.jsare not created when ejecting anymore. So check for those and if they aren't there at least createindex.jsin the project root and add the following to it to get started.I've just gone through these steps again on a new app and confirmed that they fix the issues.