可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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.
回答1:
- remove node_modules and package-lock.json
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
回答2:
If you are using react-link to link your dependencies:
- 0pen your ios Podfile and delete all yout linked dependencies: pod 'xxxxxxx', :path => '../node_modules/xxxxx
- Close Xcode
- In your /ios folder run "pod update"
- In your project source run "react-native link"
- Open Xcode and Clean Build Folder from Xcode Menu -> Product
- Run your application from Xcode
- Link manually the dependency "react-native-gesture-handler" into your Xcode Project following steps in documentation: https://facebook.github.io/react-native/docs/linking-libraries-ios
- Now run your application from Xcode, you should be fine.
回答3:
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.
回答4:
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 exist
react-native link react-native-gesture-handler
cd ios && pod install && cd ..
react-native run-ios
回答5:
I get the same error on ios from RN v0.60
The following worked for me:
cd ios
pod install
回答6:
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
回答7:
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')
回答8:
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!
回答9:
I used this in the CLI to solve the issue
cd iOS
pod install
cd ..
react-native unlink react-native-gesture-handler
回答10:
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
回答11:
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
└─ react-native-gesture-handler@1.0.15
info All dependencies
└─ react-native-gesture-handler@1.0.15
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
回答12:
If you are using a configuration with Podfile in ios. Follow this steps:
- Comment this line
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
in <react-native-project>/ios/Podfile
.
- Open
<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
.
- Add
libRNGestureHandler.a
in (Build Phases) -> (Link Binary With Libraries).
回答13:
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
回答14:
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.
回答15:
I struggled with this and none of the above answers worked for me. Here's what I had to do:
- Delete your
ios
folder entirely.
- Delete your
node_modules
folder and package-lock.json
.
- Restart your computer.
- Run
react-native eject
to re-create your native code folders.
- Run
npm install
- Run
react-native link
- Run
npm run start -- --reset--cache
- Now run
react-native run-ios
回答16:
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 :)
回答17:
Uninstalled the app from the device and run the android project - react-native run-android and it worked fine
回答18:
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