【问题标题】:How can I solve dependency issue with my react nav如何用我的反应导航解决依赖问题
【发布时间】:2020-02-28 02:12:30
【问题描述】:

所以我是响应式的新手,正在努力学习开发应用程序。我试图学习如何使用 React Navigation,所以我安装了它和依赖项,但是当我尝试使用它时,我遇到了一些错误。第一个出现在cmd中运行npm start后:

Some of your project's dependencies are not compatible with currently installed expo package version:
 - react-native-screens - expected version range: 2.0.0-alpha.12 - actual version installed: ^2.0.0-alpha.12
Your project may not work correctly until you install the correct versions of the packages.
To install the correct versions of these packages, please run: expo install [package-name ...]

然后当我在 Android sim 中启动应用程序时,我得到了这个:

Unable to resolve "@react-navigation/drawer" from "App.js"
Failed building JavaScript bundle.

这是我的代码:

import React from 'react';
import { StyleSheet, Text, View, Platform, Image, ImageBackground } from 'react-native';
import {Button} from 'native-base';
import { render } from 'react-dom';
import Search from './src/search';
import Landing from './src/landing';
import {NavigationContainer} from '@react-navigation/native'
import {createDrawerNavigator} from '@react-navigation/drawer'
import {createStackNavigator} from '@react-navigation/stack'
import {createMaterialBottomTabNavigator} from '@react-navigation/material-bottom-tabs'
import {createMaterialTopTabNavigator} from '@react-navigation/material-top-tabs'


var myBackground = require('./assets/icons/landing.jpg');
const Drawer = createDrawerNavigator();
const Stack = createStackNavigator();
const MaterialBottomTabs = createMaterialBottomTabNavigator();
const MaterialTopTabs = createMaterialTopTabNavigator();


export default class App extends React.Component {
  state = {

  }

  createHomeStack = () =>
  <Stack.Navigator>
    <Stack.Screen  name="Feed"/>
  </Stack.Navigator>

  createTopTabs = () =>
  {
    return <MaterialTopTabs.Navigator>
      <MaterialTopTabs.Screen name="Tab1" Component={Landing}/>
    </MaterialTopTabs.Navigator>
  }

  render() {
  return (
    <View style={styles.container}>
      <NavigationContainer>
        <Drawer.Navigator>
          <Drawer.Screen name="Home" Component="Landing"/>
          <Drawer.Screen name="Search" Component="Search"/>
          <Drawer.Screen name="Home"/>
        </Drawer.Navigator>
      </NavigationContainer>
    </View>
  );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: Platform.OS === "android" ? 50 : 0
  },
});

有人知道我为什么会收到这些错误吗?在开始之前,我重新安装了 React Nav。 提前致谢!

包.json:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.5",
    "@react-navigation/native": "^5.0.8",
    "expo": "~36.0.0",
    "native-base": "^2.13.8",
    "react": "~16.9.0",
    "react-dom": "~16.9.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz",
    "react-native-gesture-handler": "^1.5.6",
    "react-native-reanimated": "^1.4.0",
    "react-native-safe-area-context": "^0.6.0",
    "react-native-screens": "^2.0.0-alpha.12",
    "react-native-web": "~0.11.7"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0",
    "babel-preset-expo": "~8.0.0"
  },
  "private": true
}

【问题讨论】:

  • 在此处附加您的 package.json 代码
  • 评论太长,所以我在编辑中添加了它
  • 就像在您的 package.json 中一样,您还没有将抽屉导航安装到您的项目中。这就是为什么

标签: javascript reactjs react-native navigation react-navigation


【解决方案1】:

因此,正如您的 pacakge.json 所示,您还没有安装用于抽屉和堆栈的包。解决抽屉问题后,您将遇到堆栈问题。请按照以下步骤重现您的问题

更多关于React Navigation Version 5.x的信息

使用此安装抽屉包:

npm i -s @react-navigation/drawer

使用此安装导航堆栈:

npm i -s @react-navigation/stack

使用此安装材料底部标签:

npm i -s @react-navigation/material-bottom-tabs

使用此安装 Material 顶部标签:

npm i -s @react-navigation/material-top-tabs
  • 您应该按照上述所有步骤来解决您的项目问题

安装完以上所有依赖后,你需要清理并重建你的项目,并从模拟器中卸载以前的版本并再次运行

About Tab Navigation

About Drawer Navigation

【讨论】:

  • 我刚刚尝试过,但是在运行 npm start 时运行这些行后,我收到一个错误,提示未安装 react-native,所以我尝试运行 npm install react-native 然后尝试重新运行,然后我收到此错误:警告包 native-base 已被忽略,因为它包含无效的配置。原因:找不到模块 'native-base\package.json' 需要堆栈:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多