강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

isbcom1004님의 프로필 이미지
isbcom1004

작성한 질문수

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

[해결]그랩님 답변 주세요.

해결된 질문

작성

·

104

·

수정됨

0

102강 강의를 듣고 있는데요,
react-native-reanimated-carousel 설치 위해 노션에 링크대로
npm install react-native-reanimated-carousel@3.3.0 명령어로 설치하고

그 이후 expo install --npm react-native-reanimated react-native-gesture-handler 를 입력하여 터미널에서 설치 완료하였습니다

질문 1.

이후babel.config.js 파일에 가서 plugins: ["react-native-reanimated/plugin"], 추가 해야
하는데 문제 babel.config.js 파일존재하지 않아 어디에 플러그인 작성해야 하는지 모르겠습니다 첨부 사진

바벨 점 컨피그 점 제이에스 파일이 없네요.jpg.webp

package.json에 디펜던시를 보면 아래와 같아요

"react": "19.1.0",
    "react-native": "0.81.5",
    "react-native-reanimated-carousel": "^3.3.0",
    "react-native-reanimated": "~4.1.1",
    "react-native-gesture-handler": "~2.28.0"

질문 2. Babel 설정 위해 Cache 초기화 하는 부분도 위에 질문1이 순서대로 정상적으로 진행이 되지 않아
스킵했는데 babel.config.js에 플러그인 문구부터 저장한 뒤 바벨 설정 캐시
초기화 하는 것이 옳지요?

질문 3
102강 시작부터 ~ 18분 56초 까지 타이핑한 grab-market-mobile의 App.js
소스 내용
아래와 같은데 이것을 실행하면 사진과 같이 안드로이드 스튜디오(runtime not ready)에서 에러 발생 아래 App.js 는 강의 전체 완성본 소스아니라 에러가 난 시점까지의 소스 입니다

질문4
->여기서 Carousel 부분 살펴보면 아래 App.js 소스에서 아래와 같이 작성하는 것 맞나요?
만약 아래 작성 소스 다르면 어떻게 작성 해야하는지 댓글에 소스 적어주세요
<Carouseldata={banners}width={Dimensions.get("window").width} height={200}autoPlay={true}renderItem={(obj)=>{ return( <TouchableOpacity> <Imagesource={{uri:obj.item.imageUrl}} /> </TouchableOpacity> ) }} />

 

 

import { StatusBar } from "expo-status-bar";
import React from "react";
import { StyleSheet, Text, View, Image, ScrollView, Dimensions, TouchableOpacity } from "react-native";
import BasketballImage from "./assets/products/basketball1.jpeg";
import Avatar from "./assets/icons/avatar.png";
import {API_URL} from "./config/constants";
import axios from "axios";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import "dayjs/locale/ko";
import Carousel from "react-native-reanimated-carousel";
dayjs.extend(relativeTime);
dayjs.locale("ko");

export default function App() {
  const [products, setProducts] = React.useState([]);
  const [banners, setBanners] = React.useState([]);
  React.useEffect(()=>{
    axios.get(`${API_URL}/products`).then((result)=>{
      setProducts(result.data.products);
    }).catch((error)=>{
      console.error(error);
    })
    axios.get(`${API_URL}/banners`).then((result)=>{
      setBanners(result.data.banners);
    }).catch((error)=>{
      console.error(error);
    })
  },[])

  return ( <View style={styles.container}>
    <ScrollView>
      <Carousel 
        data={banners}
        width={Dimensions.get("window").width}
        height={200}
        autoPlay={true}
                
        
        renderItem={(obj)=>{
          return(
            <TouchableOpacity>
              <Image source={{uri : obj.item.imageUrl}} />
            </TouchableOpacity>
          )
        }}
      />
     <Text style={styles.headline}>판매되는 상품들</Text>
     <View style={styles.productList}>
     {
      products.map((product, index)=>{
        return (<View style={styles.productCard} key={product.id}>
          {product.soldout === 1 && <View style={styles.productBlur}/>}
      <View>
        <Image style={styles.ProductImage} source={{uri: `${API_URL}/${product.imageUrl}`,}} resizeMode={"contain"} />
      </View>
      <View style={styles.productContents}>
        <Text style={styles.productName}>{product.name}</Text>
        <Text style={styles.productPrice}>{product.price}원</Text>
        <View style={styles.productFooter}>
        <View style={styles.productSeller}>
          <Image style={styles.productAvatar} source={Avatar} />
          <Text style={styles.productSellerName} >{product.seller}</Text>
        </View>
        <Text style={styles.productDate}>{dayjs(product.createdAt).fromNow()}</Text>
      </View>
     </View>
    </View>);
      })
     }
     </View>
     </ScrollView>
    </View>
  
);
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    paddingTop: 32,

  },
  productCard: {
    width: 320,
    borderColor: 'rgb(230,230,230)',
    borderWidth:1,
    borderRadius: 16,
    backgroundColor: "white",
    marginBottom: 8,
   

  },
  ProductImage :{
    width: '100%',
    height: 210
  },
  productContents : {
    padding: 8
  },
  productSeller : {
    flexDirection: 'row',
    alignItems: 'center'
  },
  productAvatar: {
    width:24,
    height:24,
  },
  productFooter: {
    flexDirection: 'row',
    justifyContent:'space-between',
    alignItems: 'center',
    marginTop: 12,
  },
  productName : {
    fontSize: 16
  },
  productPrice: {
    fontSize: 18,
    fontWeight: '600',
    marginTop: 8
  },
  productSellerName: {
    fontSize: 16,

  },
  productDate: {
    fontSize: 16,
  },
  productList: {
    alignItems:"center",
  },
  headline : {
    fontSize: 24,
    fontWeight: "800",
    marginBottom:24
  },
  productBlur : {
    position: 'absolute',
    top: 0,
    bottom: 0,
    right: 0,
    left: 0,
    backgroundColor: "#ffffffaa",
    zIndex: 999,
  },
  
  
});
바벨 점 컨피그 점 제이에스 파일이 없어서 플러그인 수정 못했고 엑스포 캐시 지우는 것도 하지 못했는데 에러가 남.jpg.webp

에러 해결 차근차근 알려주셨으면 좋겠습니다
---------------------------------------------------------------------------------------------
질문 5 babel.config.js 없기에 프로젝트 루트에 파일직접 생성하고 module.exports = {

presets: ['babel-preset-expo'],

plugins: ['react-native-reanimated/plugin'],

};
위 소스입력 후 저장 완료캐시 초기화를 위해 expo start -c 까지 차례대로 수행 후 ngrok과 모바일/서버로 연동 후 결과위 버전 에러와 다르게 새로운 에러가 발생했습니다

에이아이 인턴 답변대로 질문 2까지 수행 한 후 나는 에러.jpg.webp

어떻게 해결하죠?

 

질문6 아래 게시글 답변대로 질문 2까지 수행 하니 아래와 같은 에러가 발생

엔지록 실행 후 그랩마켓서버 엔피엠 스타트 후 안드로이드 에뮬레이터 실행 후 마지막으로 그랩마켓 모바일 엔피엠 스타트 연동 후 나는 에러.jpg.webp

질문7 아래게시글 답변에 질문 3 및 3-1은 하라는대로 실행해보면 에러가 발생할까 실행을 안했는데 3개를 입력해 줘도 괜찮은건가요?
명령어 1: npm uninstall react-native-reanimated-carousel react-native-reanimated
명령어 2:npm install react-native-reanimated-carousel@3.3.0 react-native-reanimated@^2.0.0
명령어 3:expo install react-native-gesture-handler

질문8 잘 되던 안드로이드 스튜디오가 로딩을 왜 못할까요?

안드로이드 스튜디오 에뮬레이터 로딩이 안될 때.jpg.webp

 

 

답변 2

0

그랩님의 프로필 이미지
그랩
지식공유자

프로젝트를 확인하고 다시 답변 남깁니다! 안되시는 부분은 새 질문보다는 여기 답변으로 남겨주시면 감사하겠습니다!

확인 결과 expo cli가 계속 업데이트됨에 따라 babel.config.js가 없어도 잘 동작하도록 변경이 되었는데요. 본 실습 환경에서는 강의 촬영 시점에서 개발 할 수 있도록 설정을 새로 해주셔야 할 것 같습니다 (추후 강의 업데이트를 해두겠습니다!))

 

아래 가이드를 참고하시면 grab-market-mobile을 초기화하실 때
npx create-expo-app . --template blank@sdk-48 을 하도록 변경되었습니다. 번거로우시겠지만 grab-market-mobile 폴더를 새로 만들어서 저 커맨드로 진행해주실 수 있을까요? 만약 하시게 되면 강의 영상 코드와 동일하게 환경이 설정되서 강의를 잘 따라가실 수 있지 않을까 싶습니다.
https://www.notion.so/React-Native-d18d66b10ef94779836bbafedf7bbf4f?source=copy_link#57673a120569472cb5ccbbb97ed5986c

해보시고 안되는 게 있으면 편하게 질문 또 남겨주세요!

 

isbcom1004님의 프로필 이미지
isbcom1004
질문자

질문입니다.

번거로우시겠지만 grab-market-mobile 폴더를 새로 만들어서 저 커맨드로 진행해주실 수 있을까요?

->현재 grab-market-mobile 폴더c 드라이브에 있고요, vs code에서 그동안 그랩님 강의들은 grab-market-mobile과 관련된 모든 소스가 똑같이 c 드라이브 grab-market-mobile에 있는데요, 여기서 말하는 grab-market-mobile 폴더를 새로 만들어서 npx create-expo-app . --template blank@sdk-48 하라는 말씀은 c드라이브에 이미 grab-market-mobile이라는 폴더가 있어서 새폴더를 만들시에는 이름을 바꿔야 할 것 같은게 문제가 발생 할 것 같고요,

그리고 만약 폴더 이름을 기존에 c 드라이브에 grab-market-mobile이었다면 이것은 그대로 두고 새 폴더로 grab-market-mobilee 처럼 뒤에 모바일다음 e 를 더 넣어서 새폴더를 만든 후 이 폴더를 vs code에서 열어서 npx create-expo-app . --template blank@sdk-48터미널입력해주면 초기화가 되고 동시에 또 그동안 grab-market-mobile 소스 파일들이 자동으로 추가된다는 말씀인가요?

 

그리고 babel.config.js가 없어도 잘 동작한다면 아래 인프런 AI 인턴님이 하라는대로 했던 babel.config.js를 삭제해도 무방한건가요?

 

* 더불어서 질문 3, 질문 4, 질문 5, 질문 6, 질문 7,질문 8에 대해서도 아래답변 이어서 달아 주시면 감사하겠습니다.

그랩님의 프로필 이미지
그랩
지식공유자

그리고 만약 폴더 이름을 기존에 c 드라이브에 grab-market-mobile이었다면 이것은 그대로 두고 새 폴더로 grab-market-mobilee 처럼 뒤에 모바일다음 e 를 더 넣어서 새폴더를 만든 후 이 폴더를 vs code에서 열어서 npx create-expo-app . --template blank@sdk-48터미널입력해주면 초기화가 되고 동시에 또 그동안 grab-market-mobile 소스 파일들이 자동으로 추가된다는 말씀인가요?

말씀 주신 방향으로 초기화를 해주시고, 코드는 새로 작성해주셔야 할 것 같습니다. 기존에 작성하신 코드는 복사 붙여넣기 식으로 진행해보실 수 있겠지만, 강의를 따라 새로 작성을 하시는 게 헷갈리지 않지 않을까 싶어요!

 

질문3~8의 경우에, 위에 방식대로 해보시고 다시 질문을 달아주시면 좋을 것 같습니다. bable.config.js는 위 방식으로 하면 강의와 똑같이 새로 생겨있을 겁니다.

isbcom1004님의 프로필 이미지
isbcom1004
질문자

그랩님, 잘 해결 되었습니다.

답변 진심으로 감사합니다.

 

0

안녕하세요, 인프런 AI 인턴입니다.

isbcom1004님, 강의를 들으면서 발생한 여러 가지 에러에 대해 차례로 해결 방안을 제시하려고 합니다. 현재 상황과 관련성 있는 기존 질문들을 살펴보면, 몇 가지 해결책을 제시할 수 있을 것 같습니다.

1. Babel 설정 및 플러그인 추가 문제

문제: babel.config.js 파일이 없는 상태에서 플러그인 추가 문제

해결책:
- babel.config.js 생성하기: 프로젝트 루트에 babel.config.js 파일을 새로 생성하고, 아래의 내용을 추가하십시오.

  module.exports = {
    presets: ['babel-preset-expo'],
    plugins: ['react-native-reanimated/plugin'],
  };

이 파일을 저장한 후, 터미널에서 expo start -c 명령어를 사용하여 캐시를 초기화 하십시오.

문제: react-native-reanimated-carousel 및 기타 패키지 설치 후 코드 실행 시 에러 발생

해결책:
1. 패키지 버전 확인 및 재설치:
- 이미 설치한 패키지를 삭제하고 올바른 버전을 재설치하세요.

   npm uninstall react-native-reanimated-carousel react-native-reanimated
   npm install react-native-reanimated-carousel@3.3.0 react-native-reanimated@~4.1.1
   expo install react-native-gesture-handler
  1. 코드 검토 및 수정:
    • Carousel 컴포넌트의 사용 방식이 적절한지 다시 확인하세요. 코드를 그대로 사용하되, 문법이나 데이터 준비 단계를 확인하세요. 주어진 소스 코드와 비교하여 맞는지 재확인해보십시오.

3. 기존 질문 및 답변 참고

관련 유사 문제를 해결했던 사례를 참고하면 도움이 될 것입니다:

문제가 해결되지 않으면 각 명령어를 수행한 후 발생한 에러 로그 전체를 확인해 보시고, 추가적인 디버깅 정보나 로그를 제공해주시면 보다 구체적으로 도와드릴 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

isbcom1004님의 프로필 이미지
isbcom1004
질문자

지식 공유자님이신 그랩님의 답변 꼭 부탁 드립니다.

모든 질문은 이 게시물 이곳에 답변 주시면 감사하겠습니다.

isbcom1004님의 프로필 이미지
isbcom1004
질문자

그랩님, 확인하시면요, 이곳 게시물의 답변으로요 빠른시일내에 답변 주시면 좋겠습니다.

아직도 해결이 안되어서요, 그랩님의 답변을 기다리고 있습니다.

isbcom1004님의 프로필 이미지
isbcom1004

작성한 질문수

질문하기