首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React本机react-导航SafeArea问题

React本机react-导航SafeArea问题
EN

Stack Overflow用户
提问于 2020-07-11 21:17:40
回答 3查看 5.3K关注 0票数 2

我更新了我的安卓项目,react-navigation was 3.x,移动到5.x,决定实现必要的更改,但它不想工作,复制了react导航页面的示例,但仍然显示相同的错误,有人知道问题出在哪里吗?我搜索了半个互联网也找不到解决方案

我的package.json:

代码语言:javascript
运行
复制
{
  "name": "BusinessCard",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/native": "^5.7.0",
    "@react-navigation/stack": "^5.7.0",
    "react": "^16.13.1",
    "react-native": "^0.63.0",
    "react-native-gesture-handler": "^1.6.1",
    "react-native-reanimated": "^1.9.0",
    "react-native-safe-area-context": "^3.1.1",
    "react-native-safe-area-view": "^1.1.1",
    "react-native-screens": "^2.9.0"
  },
  "devDependencies": {
    "@babel/core": "^7.10.4",
    "@babel/runtime": "^7.10.4",
    "babel-jest": "^24.9.0",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.53.1",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  }
}

我复制的代码:

代码语言:javascript
运行
复制
import 'react-native-gesture-handler';
import * as React from 'react';
import { StyleSheet, View, Text, TouchableHighlight } from "react-native";
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
    </View>
  );
}

const Stack = createStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

以及错误:

代码语言:javascript
运行
复制
Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" was not found in the UIManager.

This error is located at:
    in RNCSafeAreaProvider (at SafeAreaContext.tsx:74)
    in SafeAreaProvider (at SafeAreaProviderCompat.tsx:42)
    in SafeAreaProviderCompat (at StackView.tsx:432)
    in GestureHandlerRootView (at GestureHandlerRootView.android.js:31)
    in GestureHandlerRootView (at StackView.tsx:431)
    in StackView (at createStackNavigator.tsx:82)
    in StackNavigator (at App.js:27)
    in EnsureSingleNavigator (at BaseNavigationContainer.tsx:376)
    in ForwardRef(BaseNavigationContainer) (at NavigationContainer.tsx:91)
    in ThemeProvider (at NavigationContainer.tsx:90)
    in ForwardRef(NavigationContainer) (at App.js:26)
    in App (at renderApplication.js:45)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:106)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:132)
    in AppContainer (at renderApplication.js:39)
[Sat Jul 11 2020 15:11:50.561]  ERROR    Invariant Violation: requireNativeComponent: "RNCSafeAreaProvider" was not found in the UIManager.

This error is located at:
    in RNCSafeAreaProvider (at SafeAreaContext.tsx:74)
    in SafeAreaProvider (at SafeAreaProviderCompat.tsx:42)
    in SafeAreaProviderCompat (at StackView.tsx:432)
    in GestureHandlerRootView (at GestureHandlerRootView.android.js:31)
    in GestureHandlerRootView (at StackView.tsx:431)
    in StackView (at createStackNavigator.tsx:82)
    in StackNavigator (at App.js:27)
    in EnsureSingleNavigator (at BaseNavigationContainer.tsx:376)
    in ForwardRef(BaseNavigationContainer) (at NavigationContainer.tsx:91)
    in ThemeProvider (at NavigationContainer.tsx:90)
    in ForwardRef(NavigationContainer) (at App.js:26)
    in App (at renderApplication.js:45)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:106)
    in RCTView (at View.js:34)
    in View (at AppContainer.js:132)
    in AppContainer (at renderApplication.js:39)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-13 18:28:15

在较新版本的React导航中,我们必须手动安装react-native-safe-area甚至react-native-screens。我已经通过使用sudo npm install react-native-safe-areasudo npm install react-native-screens解决了类似的问题。然后从我的android中清除应用程序数据,并重新安装应用程序。打开新终端(Ubuntu20.04LTS),然后运行npm start。试试这个,它可能会有帮助。

票数 3
EN

Stack Overflow用户

发布于 2020-07-13 18:17:21

您是否正在尝试: cd ios && pod install && cd ..然后关闭应用程序,关闭所有终端并重新构建应用程序。希望能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2020-11-22 21:27:36

我有一个只适用于android的解决方案。也就是说,您只需在您的终端中执行以下步骤。

[your project path]\> cd android并按Enter键。

然后,如果你在PowerShell中,只需输入下面的命令即可。

[your project path]\android\> ./gradlew clean

如果你在cmd中,输入下面的命令。

[your project path]\android\> gradlew clean

并重新启动您的react原生项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62849665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档