我已在 React Native项目中安装了 react-navigation 。它是一个入门项目,没有任何代码。但是在运行项目时,我面临这样的错误。
这是我的导航代码
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;
这是App.js代码
import Navigator from './Router';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Navigator />
</View>
);
}
}
如果我从App.js中删除了导航器组件,并用 Text 替换了该组件,则该应用程序将正常运行。
答案 0 :(得分:78)
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
答案 1 :(得分:4)
首先,删除node_modules
和package-lock.json
并运行npm install
。
在您的React Native项目中安装react-navigation
软件包之后。您应该安装react-native-gesture-handler。如果您使用的是Expo,则无需在此处执行任何操作,因为它已包含在SDK中。否则:
npm install react-native-gesture-handler
最后,将链接手势依赖项设置为:
react-native link react-native-gesture-handler
答案 2 :(得分:4)
如果您正在使用react-link链接您的依赖项:
答案 3 :(得分:2)
也许有人来这里是因为和我一样的问题。
我收到此错误是因为我使用的是反应导航版本3.x,在该版本中,stackNavigator
已更改为createStackNavigator
,应使用createAppContainer(createStackNavigator)
我像mr.amiri said一样修复它,但我并没有删除我的node_module我只是按照步骤3-5
答案 4 :(得分:2)
由于不允许我发表评论,因此我将其张贴在这里。这是@Amiri Houssem的回答,但我要再添加一件事:
remove node_modules and package-lock.json
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
如果经过这5个步骤后仍然出现错误,请检查android / settings.gradle并将该行更改为:
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
答案 5 :(得分:1)
您可以检查您的react-native版本 如果React Native 0.59及更低版本可以
react-native link react-native-gesture-handler
并在
中检查您的@react-navigation
版本
答案 6 :(得分:1)
我在CLI中使用它来解决问题
cd iOS
pod install
cd ..
react-native unlink react-native-gesture-handler
答案 7 :(得分:1)
摘自官方文档:
如果您使用的是React Native> = 0.60,则需要先禁用react-native-gesture-handler的自动链接。要禁用自动链接,请在项目的根目录中创建一个具有以下内容的react-native.config.js文件:
module.exports = {
dependencies: {
'react-native-gesture-handler': {
platforms: {
android: null,
ios: null,
},
},
},
};
如果您使用的是React 0.60,请忽略此官方文档。请按照以下步骤操作:
rm react-native.config.js
(如果存在)react-native link react-native-gesture-handler
cd ios && pod install && cd ..
react-native run-ios
答案 8 :(得分:1)
我正在回答,因为以上答案均与我无关。
我收到此错误消息是因为VSCode在添加import { TouchableOpacity } from 'react-native-gesture-handler'
元素时自动将<TouchableOpacity>
作为依赖项插入到文件中。
将最后一次编辑的文件交给您,以防万一您不希望有导入语句!
答案 9 :(得分:0)
这对我也很好。
1)npm install react-navigation
2)npm install react-native-gesture-handler
3)npm intstall
4)react-native link
卸载应用程序
5)react-native run-android
答案 10 :(得分:0)
在命令提示符下执行以下命令(以管理员身份运行)
npm install react-navigation
npm install react-native-gesture-handler
npm intstall
react-native link
重新安装该应用程序将解决此问题。
答案 11 :(得分:0)
如果在ios中使用带有Podfile的配置。请按照以下步骤操作:
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
中对此行<react-native-project>/ios/Podfile
进行注释。<react-native-project>.xcworkspace
中打开RNGestureHandler.xcodeproj
在库中添加node_modules/react-native-gesture-handler/ios
(右键单击库文件夹并选择“将文件添加到”)。libRNGestureHandler.a
。答案 12 :(得分:0)
我为此感到挣扎,以上答案对我都不起作用。这是我必须要做的:
ios
文件夹。node_modules
文件夹和package-lock.json
。react-native eject
重新创建您的本机代码文件夹。npm install
react-native link
npm run start -- --reset--cache
react-native run-ios
答案 13 :(得分:0)
即使react-native-gesture-handler
位于node_modules
文件夹中,我们也需要将其添加到path或重新安装。然后链接本机代码。
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
或react-native run-ios
答案 14 :(得分:0)
我从RN v0.60在ios上遇到了相同的错误
以下对我有用:
cd ios
pod install
答案 15 :(得分:0)
查看您的本机反应版本,如果版本为0.60,则必须使用Jetifier迁移到androidX,请按照此链接中的步骤进行操作 https://github.com/mikehardy/jetifier
对我成功:)
答案 16 :(得分:0)
从设备上卸载应用程序并运行android项目-react-native run-android,它运行良好
答案 17 :(得分:0)
如果您使用的是React Native> = 0.60:
您应该在ios/Podfile
中看到以下条目:
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
如果此行不存在,请首先运行:
react-native link react-native-gesture-handler
ios/Podfile
现在应该包含一个新条目。
现在从iOS目录/ios/
运行此命令:
pod install
直接使用XCode
或react-native run-ios
再次运行iOS项目
答案 18 :(得分:0)
可能已经晚了。
临时解决方案将React导航的版本降级:
1-取消链接并卸载react-navigation和处理程序
2-将“反应导航”:“ ^ 2.18.2” 添加到package.json
3-删除node_modules文件夹
4- npm我
5- react-native链接
答案 19 :(得分:-1)
如果您已完成上述操作,但尚未运行,请尝试以下操作 如果您使用Windows
cd android
.\gradlew cleanBuildCache
并尝试运行它
react-native run-android