Я использую React Native (Expo CLI). Поскольку я переустановил npm, у меня возникает эта ошибка при попытке запустить npm start
Я обнаружил некоторые похожие ошибки, связанные с react-native-snap-carousel
(я использую его).
TypeError: undefined is not an object (evaluating '_react.PropTypes.array')
at node_modules\expo\build\environment\react-native-logs.fx.js:27:4 in error
at node_modules\react-native\Libraries\Core\ExceptionsManager.js:95:4 in reportException
at node_modules\react-native\Libraries\Core\ExceptionsManager.js:141:19 in handleException
at node_modules\react-native\Libraries\Core\setUpErrorHandling.js:24:6 in handleError
at node_modules\@react-native\polyfills\error-guard.js:49:36 in ErrorUtils.reportFatalError
at node_modules\metro-runtime\src\polyfills\require.js:203:6 in guardedLoadModule
at http://192.168.1.6:19000/node_modules%5Cexpo%5CAppEntry.bundle?platform=android&dev=true&hot=false&strict=false&minify=false:202384:3 in global code
Итак, внутри его основной файл импортируется {PropTypes} from "react";
и заменяется на import PropTypes from "prop-types";
(ранее установленный). Также изменено propTypes.items: PopTypes.array.isRequired
на propTypes.items:PropTypes.array
, то же самое на slideStyle
(потому что я начал получать новые ошибки, связанные с items
и slideStyle
), но теперь я получаю новые ошибки, подобные этой .
Все ошибки связаны с react-native-snap-carousel
Вот мой package.json
Вот как я использую react-native-snap-carousel
import React, { useState, useEffect } from "react";
import {
View,
StyleSheet,
Image,
Dimensions,
TouchableWithoutFeedback,
} from "react-native";
import { getBannersApi } from "../../Api/HomeBanner";
import Carousel, { Pagination } from "react-native-snap-carousel";
import { size } from "lodash";
import { useNavigation } from "@react-navigation/native";
import { SERVER_RESOURCERS } from "../../Utils/Constans";
const width = Dimensions.get("window").width;
const height = 160;
export default function Banner() {
const [banners, setBanners] = useState(null);
const [banneActive, setBanneActive] = useState(0);
const navigation = useNavigation();
useEffect(() => {
(async () => {
const response = await getBannersApi();
setBanners(response.data);
})();
}, []);
const goToProduct = (id) => {
navigation.push("product", { idProduct: id });
};
if (!banners) return null;
const renderItem = ({ item }) => {
return (
<TouchableWithoutFeedback
onPress = {() => goToProduct(item.attributes.product.data.id)}
>
<Image
style = {styles.carousel}
source = {{
uri: `${SERVER_RESOURCERS}${item.attributes.banner.data[0].attributes.formats.small.url}`,
}}
/>
</TouchableWithoutFeedback>
);
};
return (
<View style = {styles.container}>
<Carousel
layout = "default"
data = {banners}
sliderWidth = {width}
itemWidth = {width}
renderItem = {renderItem}
loop = {true}
onSnapToItem = {(i) => setBanneActive(i)}
autoplay = {true}
autoplayInterval = {5000}
autoplayDelay = {2000}
/>
<Pagination
dotsLength = {size(banners)}
activeDotIndex = {banneActive}
inactiveDotOpacity = {0.6}
inactiveDotScale = {0.6}
containerStyle = {styles.dotsContainer}
dotStyle = {styles.dot}
dotColor = {styles.dot.backgroundColor}
inactiveDotColor = {styles.dot.backgroundColor}
/>
</View>
);
}
Я заметил, что react-native-snap-carousel
больше не поддерживается, поэтому я перешел на react-native-reanimated-carousel