Reputation: 7309
I have installed react-navigation in my React Native project. Its a starter project doesn't have any codes. But while running project I am facing error like this.
Here is my Navigation code
import { createStackNavigator } from 'react-navigation';
import Home from './screens/Home';
import WeatherDetail from './screens/WeatherDetail';
const Navigation = createStackNavigator({
Home: { screen: Home },
WeatherDetail: {
screen: WeatherDetail
}
});
export default Navigation;
And here is the App.js codes
import Navigator from './Router';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Navigator />
</View>
);
}
}
If I remove the navigator component from the App.js and replace it with a Text the application runs without any error.
Upvotes: 49
Views: 64152
Reputation: 135
you can check your version of react-native if React Native 0.59 and lower you can
react-native link react-native-gesture-handler
and check your @react-navigation
version in
Upvotes: 1
Reputation: 4544
If you're on React Native >= 0.60:
You should see the following entry in your ios/Podfile
:
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
If this line is not there, first run:
react-native link react-native-gesture-handler
ios/Podfile
should now contain a new entry.
Now run this command from iOS directory /ios/
:
pod install
Run your iOS project again either directly using XCode
or react-native run-ios
Upvotes: 0
Reputation: 4388
Uninstalled the app from the device and run the android project - react-native run-android and it worked fine
Upvotes: 1
Reputation: 151
I used this in the CLI to solve the issue
cd iOS
pod install
cd ..
react-native unlink react-native-gesture-handler
Upvotes: 1
Reputation: 1
see your native react version, if version 0.60 then you must migrate to androidX using a jetifier, follow the steps in this link https://github.com/mikehardy/jetifier
successful for me :)
Upvotes: 0
Reputation: 3182
I get the same error on ios from RN v0.60
The following worked for me:
cd ios
pod install
Upvotes: 4
Reputation: 4635
From the official doc:
If you're on React Native >= 0.60, you need to disable autolinking for react-native-gesture-handler first. To disable autolinking for it, create a react-native.config.js file in the root of your project with the following content:
module.exports = {
dependencies: {
'react-native-gesture-handler': {
platforms: {
android: null,
ios: null,
},
},
},
};
If your are using React 0.60, just omit this official doc. Follow following steps:
rm react-native.config.js
if existreact-native link react-native-gesture-handler
cd ios && pod install && cd ..
react-native run-ios
Upvotes: 5
Reputation: 827
I struggled with this and none of the above answers worked for me. Here's what I had to do:
ios
folder entirely.node_modules
folder and package-lock.json
.react-native eject
to re-create your native code folders.npm install
react-native link
npm run start -- --reset--cache
react-native run-ios
Upvotes: 0
Reputation: 91
I'm answering because none of the above answers were relevant to me.
I got this error because VSCode automatically inserted import { TouchableOpacity } from 'react-native-gesture-handler'
as a dependency in my file when I added a <TouchableOpacity>
element.
Give the last files you edited a once-over just in case there's an import statement you don't expect!
Upvotes: 1
Reputation: 1
Execute the following commands in command prompt (Run as Administrator)
npm install react-navigation
npm install react-native-gesture-handler
npm intstall
react-native link
Re-Install the application will resolve the issue.
Upvotes: 0
Reputation: 297
This worked well for me as well.
1) npm install react-navigation
2) npm install react-native-gesture-handler
3) npm intstall
4) react-native link
uninstall the app
5) react-native run-android
Upvotes: 0
Reputation:
Since I am not allowed to comment, I am posting it here. This is the answer by @Amiri Houssem but I am adding one more thing:
remove node_modules and package-lock.json
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
If there is an error even after these 5 steps, check android/settings.gradle and change that line to this:
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
Upvotes: 1
Reputation: 301
If you are using a configuration with Podfile in ios. Follow this steps:
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
in <react-native-project>/ios/Podfile
.<react-native-project>.xcworkspace
Add RNGestureHandler.xcodeproj
in Libraries (Right click over library folder and select "Add files to ") from node_modules/react-native-gesture-handler/ios
.libRNGestureHandler.a
in (Build Phases) -> (Link Binary With Libraries).Upvotes: 0
Reputation: 9979
Even though react-native-gesture-handler
is present in node_modules
folder, we need to add it to path or install it again. Then link with native code.
1) npm install --save react-native-gesture-handler
success Saved 1 new dependency.
info Direct dependencies
└─ [email protected]
info All dependencies
└─ [email protected]
2) react-native link
rnpm-install info Linking react-native-gesture-handler ios dependency
rnpm-install info Platform 'ios' module react-native-gesture-handler has been
successfully linked
rnpm-install info Linking react-native-gesture-handler android dependency
rnpm-install info Platform 'android' module react-native-gesture-handler has
been successfully linked
3) react-native run-android
or react-native run-ios
Upvotes: 0
Reputation: 41
maybe someone come here because same problem as me.
i got this error because i'm using react-navigation version 3.x, in that version stackNavigator
is change to createStackNavigator
and should use createAppContainer(createStackNavigator)
im fix it just like mr.amiri said but im not delete my node_module im just follow step 3 - 5
Upvotes: 2
Reputation: 435
if you have done the above, it hasn't run yet, try this if you use Windows
cd android
.\gradlew cleanBuildCache
and try running it
react-native run-android
Upvotes: 0
Reputation: 61
If you are using react-link to link your dependencies:
Upvotes: 6
Reputation: 1939
First, remove node_modules
and package-lock.json
and run npm install
.
After installing the react-navigation
package in your React Native project. You should install react-native-gesture-handler. If you’re using Expo you don’t need to do anything here, it’s included in the SDK. Otherwise:
npm install react-native-gesture-handler
And finally, link gesture dependency as:
react-native link react-native-gesture-handler
This answer based on the React Navigation document.
Upvotes: 3
Reputation: 1102
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
Upvotes: 96
Reputation: 27
may be its late.
Temporary solution downgrade the version of react navigation:
1- unlink and uninstall react-navigation and the handler
2- add "react-navigation": "^2.18.2" to package.json
3- remove node_modules folder
4- npm i
5- react-native link
Upvotes: 0