강의

멘토링

커뮤니티

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

isbcom1004님의 프로필 이미지
isbcom1004

작성한 질문수

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

[그랩님께]101강 안드로이드 에러들(Key prop)해결방법 궁금합니다.

작성

·

13

·

수정됨

0

그랩님, 강의 잘 듣고 있습니다.

다름이 아니라 궁금한 사항(=에러 해결방법)이 필요해서 글을 남기게 되었습니다.


101강을 듣고 있는데요 Axios 에러(400)안드로이드 스튜디오 에뮬레이터에서 발생하고 있습니다.

일단 101강 처음부터 ~ 4분 52초까지 그랩님께서 작성하신 소스코드를 똑같이 작성 후결과를 보려하는데,
농구공 그림(세부사항:판매자:그랩,가격,상품명등등) 이 나오지 않아서 이것을 어떻게 하면 그랩님과 같은
결과를 볼 수 있을지에 대해 여쭈어봅니다.

사진 1 첨부 : 판매되는 상품들 밑에 100강만 들었을 시에 농구공 화면이 잘 나왔으나 101강 4분 52초까지
의 내용의 소스코드를 입력 후 결과값 보면 400 에러도 발생하고 농구공도 안나오게 됩니다.
어떻게 해야 하나요?

101강 사진1.jpg.webp


사진 2 첨부 : 구체적인 에러 내용

안드로이드 에뮬레이터 400코드 에러.jpg.webp

 

[사진3] 스크롤은 적용이 안 된 것 같은데요, 상품이 2개 뿐이라 스크롤이 없는 건가요?

스크롤이 안되는 에러1.jpg.webp


[사진4] 사진 3에 대한 구체적인 에러 ----> 어떻게 에러를 해결 할 수 있을까요?

구체적인 에러2 해결 어떻게하는지.jpg.webp

 

안드로이드 스튜디오에서 상품 정보를 불러오지 못하는
것에 대해
서 어떻게 해결해야 할 지 차근 차근 잘 알려주셨으면 좋겠습니다.

그리고 마지막 질문은 안드로이드 애물레이터가 잘 되는지 확인하려면
grab-market-server에서 npm start를 해준 뒤 확인하면 되는건가요?
아니면 grab-market-mobile에서 npm start를 해준 뒤 a(=Open Android)를 누르면 되는 건가요?
아니면 둘다 동시에 npm start를 해주는 건가요?

 

그리고 아래에는 grab-market-mobile 폴더의 App.js 제 소스 코드를 아래에 첨부하겠습니다.

 

import { StatusBar } from "expo-status-bar";
import React from "react";
import { StyleSheet, Text, View, Image, ScrollView } 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";
dayjs.extend(relativeTime);
dayjs.locale("ko");

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

  return ( <View style={styles.container}>
    <ScrollView>
     <Text style={styles.headline}>판매되는 상품들</Text>
     <View style={styles.productList}>
     {
      products.map((product, index)=>{
        return (<View style={styles.productCard}>
      <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
  }
  
  
});

그랩님의 답변을 기다립니다.

답변 1

0

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

안드로이드 스튜디오 에뮬레이터에서 Axios 400 에러 및 상품 정보 불러오기에 어려움이 있으신 것 같습니다. 이 문제는 주로 서버와 클라이언트 간의 통신 오류로 인해 발생할 수 있습니다. 아래에 몇 가지 해결 방법을 제시드리겠습니다:

1. Axios 400 에러의 원인과 해결 방법

  • 요청 URL 확인: API_URL이 올바르게 설정되어 있는지 확인해주세요. 종종 오타나 잘못된 주소 설정이 400 에러를 유발할 수 있습니다.
  • 서버 상태 확인: 백엔드 서버가 정상적으로 실행 중인지 확인하시고, 포트도 올바른지 점검해보세요.
  • API 요청 구조: 요청을 보낼 때 필요한 헤더나 파라미터가 누락되지 않았는지 확인합니다. 조건에 맞는 요청인지 반드시 체크하세요.

2. 이미지 및 데이터 불러오기 문제

  • 이미지 경로 확인: 상품 이미지 URL이 올바르게 설정되어 있는지 확인하세요. 경로가 잘못되었다면 수정이 필요합니다.
  • 데이터 체크: setProducts(result.data.products) 부분에서 result.data.products가 실제로 존재하는 데이터인지 콘솔로 확인해볼 수 있습니다.

3. 에뮬레이터 및 서버 실행 방법

그랩 마켓 서버와 모바일 앱의 연동을 위해 다음 절차를 따르세요:
- grab-market-server 실행: 백엔드 서버를 먼저 실행 (npm start).
- grab-market-mobile 실행 및 에뮬레이터 열기: 그 후 npm start로 모바일 프로젝트를 실행한 뒤, a 명령어로 안드로이드 에뮬레이터를 엽니다.

기존 유사 문제와의 참고 자료

관련 유사 문제 해결 방법을 참고해 보시기 바랍니다:
- axios 주소 변경 이후 화면이 뜨지 않아 문의드립니다!

위 해결 방법들이 기대한 결과를 얻는데 도움이 되길 바랍니다. 추가적으로, 문제가 여전히 지속된다면, 더 상세한 에러 메시지나 콘솔 로그를 제공해주시면 감사하겠습니다.

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

isbcom1004님의 프로필 이미지
isbcom1004

작성한 질문수

질문하기