inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

리액트 버전업데이트에 관해 문의드려요

해결됨

풀스택 리액트 라이브코딩 - 간단한 쇼핑몰 만들기

안녕하세요 리액트로 웹개발 시작한 6개월차 신입개발자 입니다. 강의 정말 잘 보고있는데 너무 감사하게도 우연히 저희 안건과 개발환경이 많이 겹쳐서 큰 도움받고있습니다! 현재 안건에서 쓰는 리액트버전이 15.6.1인데 이번에 최신버전 v18.2.0로 업데이트하는 미션 이 떨어졌는데어떻게 헤쳐나가야할지 너무 답답해서 고민끝에 질문드립니다... 현재 안건의 스펙입니다. ・안건종류: 데이트 매칭 어플 ・메인언어: react ・상태관리: redux ・프레임워크 : koa ・미들웨어: redux-thunk ======== 개요 ======== 일단 검색으로는 잘 정리된곳 찾기가 어려워서 리액트공식문서와 책 위주로 참고해서 정리중인데요, 우선 큰 틀을 짜고 문제점들을 세분화하면서 틀을 좁혀가려고합니다.. react, react-dom 최신버전 인스톨후 에러를 우선순위별로 리스트화 하기 ・ ReactDOM.render is no longer supported in React 18. Use createRoot instead. ・Warning: componentWillMount has been renamed, and is not recommended for use. ・ componentWillReceiveProps has been renamed ・You have triggered an unhandledRejection, you may have forgotten to catch a Promise rejection 공동작업을 위한 규칙 리스트화 하기 ・class 컴포넌트 → function 컴포넌트로 변경 ・life cycle → useEffect 로 처리, 또는 커스텀 hook ・react-redux 의 connect 함수 → useSelector, useDispatch Hooks로 리덕스와 컴포넌트 연동 ・state 업데이트시 불변성을위한 spread 연산자, immer 사용 ・코드 스플리팅: 라우팅에 React.lazy or Suspense 적용 ・react-redux 디렉토리 구조: 일반구조(component, container, reducer)-> ducks 패턴 사용해서 파일 모듈화 의존중인 라이브러리및 패키지 업데이트 2와 3을 진행하며 기타 에러를 해결 ======== 질문 ======== 3번의 [공동작업을 위한 규칙 리스트화]의 경우, 검색과 에러기준으로 만들고있는데 너무 부족한것같습니다. 프로젝트 버전 업그레이드시, 기준이 되는 컨텐츠가 있는지 궁금합니다. 현재 리액트 구버전 15부터 16,17,18 최신버전까지의 모든 업데이트 변경점을 체크해서 일일이 적용해야하는지(←React공식문서블로그에서), 단순히 15->18로 점프해서 바뀐사항만 적용해도되는지 현재 구버전에서 사용중인 각종 패키지, 라이브러리 업데이트는 어떤 방향으로 진행해야할지-> 이부분이 제일 손대기 어려울정도로 막막합니다. 리액트버전업뎃처럼 똑같이 최신버전인스톨, 에러체크, 버전별 변경점 체크후 적용및 수정 하면 될까요? 입사 3개월차에 선배나 가이드없이 진행중이라 정말 고민끝에 질문드립니다… 혹시 시간나실때 답변이나 조언해주시면 정말 감사하겠습니다……(살려주세요…..) 잘부탁드려요 ! (제발 구원의 손길을 ㅠㅠㅠ) package.json (react만 최신인스톨) "dependencies": { "@paypal/paypal-js": "4.1.0", "babel-runtime": "^6.25.0", "chart.js": "^2.6.0", "classnames": "^2.2.3", "es6-promise": "^4.1.1", "exif-js": "^2.2.1", "firebase": "^7.7.0", "history": "^3.3.0", "koa": "^1.2.0", "koa-static": "^2.0.0", "lodash.reverse": "^4.0.1", "lodash.sortby": "^4.5.0", "lodash.throttle": "^4.0.0", "lodash.uniqby": "^4.5.0", "moment": "^2.17.0", "moment-timezone": "^0.5.13", "node-fetch": "^2.6.6", "normalizr": "^2.3.0", "object-assign": "^4.0.1", "pm2": "^2.6.1", "prop-types": "^15.5.10", "react": "^18.2.0", "react-chartjs-2": "^2.5.6", "react-dom": "^18.2.0", "react-ga": "^2.1.2", "react-helmet": "^5.1.3", "react-infinite-scroller": "^1.2.4", "react-redux": "^5.0.2", "react-router": "^3.0.5", "react-router-redux": "^4.0.1", "react-router-scroll": "^0.4.1", "react-scroll": "1.5.4", "react-slick": "^0.14.5", "react-swipeable": "^4.0.1", "react-textarea-autosize": "^5.0.6", "redux": "^3.7.2", "redux-actions": "^2.2.1", "redux-api-middleware": "^1.0.3", "redux-logger": "^3.0.6", "redux-thunk": "^2.4.0" }, "devDependencies": { "babel-cli": "^6.7.5", "babel-eslint": "^8.2.3", "babel-plugin-espower": "^2.3.1", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-transform-async-to-generator": "^6.24.1", "babel-plugin-transform-class-properties": "^6.6.0", "babel-plugin-transform-export-extensions": "^6.22.0", "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-plugin-transform-runtime": "^6.15.0", "babel-preset-es2015": "^6.6.0", "babel-preset-react": "^6.3.13", "babel-register": "^6.7.2", "babelify": "^7.3.0", "browserify": "^13.0.0", "css-mqpacker": "^6.0.1", "csswring": "^6.0.0", "envify": "^4.1.0", "eslint": "^4.19.1", "eslint-config-tapplint": "^2.0.1", "eslint-config-tapplint-react": "^1.0.0", "eslint-plugin-react": "7.4.0", "gulp": "^3.9.0", "gulp-consolidate": "^0.2.0", "gulp-htmlmin": "^3.0.0", "gulp-iconfont": "^8.0.0", "gulp-imagemin": "^3.3.0", "gulp-notify": "^3.0.0", "gulp-plumber": "^1.0.1", "gulp-postcss": "^6.4.0", "gulp-rename": "^1.2.2", "gulp-sketch": "^1.0.5", "gulp-sourcemaps": "^2.0.0", "husky": "^0.14.3", "karma": "^1.1.0", "karma-browserify": "^5.0.5", "karma-chrome-launcher": "^2.2.0", "karma-mocha": "^1.0.1", "karma-mocha-reporter": "^2.0.3", "lint-staged": "^7.2.2", "lodash": "^4.11.1", "md5-file": "^4.0.0", "mocha": "^3.5.0", "postcss": "^5.2.17", "postcss-cssnext": "^3.1.1", "postcss-import": "^10.0.0", "postcss-media-variables": "^2.0.0", "postcss-nesting": "^2.3.1", "power-assert": "^1.4.4", "react-addons-test-utils": "~15.6.0", "react-prefixr": "^0.1.0", "require-dir": "^0.3.2", "stylelint": "^7.13.0", "stylelint-config-standard": "^16.0.0", "stylelint-order": "^0.5.0", "tapplint": "^0.9.0", "terser": "^4.6.11", "uglifyify": "^5.0.2", "watchify": "^3.7.0", "yargs": "^6.0.0" }

  • graphql
  • react
  • firebase
mihyun Lee 댓글 1 좋아요 0 조회수 644

선생님, 여러 머신러닝 모델을 결합하는 다른 방법에 대해 질문있습니다.

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 선생님! 지난번에 보내주신 쿠폰은 정말 감사했습니다. 덕분에 다음으로 공부할 것에 대해 계획할 수 있었습니다. 개인 공부중에 궁금한 것이 있어 이렇게 여쭤봅니다. 제가 사이버보안 분야를 머신러닝으로 향상시키는 것에 관심이 있는데요. 마침 앙상블 수업을 듣던 와중에 개인적으로 공부하고 있던 IDS(침입탐지) 데이터 셋 관련해서 어떤 아이디어가 생겨서요. 이 데이터셋은 다중 분류에 해당되는 것인데요. 공격 패턴이 15가지(라벨) 정도라고 가정하겠습니다.이 라벨들을 저만의 방법으로 새로 분류하여 새로운 라벨들을 추가하여 만들어서 각각 학습하고 테스트를 진행해봤습니다. 첫번째로, 이진 분류로 라벨을 0, 1로 다시 만들어서 모든 공격들은 1로 분류하고, 일반적인 것(양성,Benign)들은 0으로 분류하는 것이죠. 즉, 공격이긴 공격인데 어떤 공격인지는 모르는 정도로만 시스템이 탐지하는 것입니다. 이럴 경우, 정확도, 정밀도, 재현율이 모두 99.97%로 아주 높은 확률로 탐지를 해냅니다. 두번째 분류는 비슷한 공격 패턴끼리 묶어서 그룹화를 한 뒤(즉, 라벨의 수를 줄이는 것입니다.) 학습 및 테스트를 하는 것입니다. 이럴 경우에도 아주 높은 점수를 보였습니다. 마지막 분류는 원래 라벨들입니다(전처리 작업 후). 역시 높은 점수를 보이긴 하나, 약간 낮은 점수를 보이는 일부 라벨들이 있습니다.그래서 말인데요. 혹시 이 세가지 모델을 연결해서 결과를 추출하는 방법이 있을 까요? 예를 들어, 먼저 공격인지 아닌지를 보고(첫번째 분류), 공격이라면 어떤 그룹에 속하는 지 보고(두번 째 분류), A라는 그룹이라면, 마지막 단계의 분류에서 세부적으로 어떤 라벨인지(세번째 분류)를 예측해내는 것이죠. 이렇게 연계하여 결과를 예측할 수 있는 모델을 만든다면, 점수가 약간 낮은 라벨들도 일부 보완할 수 있지 않을 까 생각되어서요. 아이디어는 떠올랐는데, 구글에 검색해보니 앙상블이나, 파이프라인 등의 관련된 내용만 검색이 되어서요. 혹시 제가 모르는 어떤 기술이 있을까요? 선생님의 조언을 구합니다.

  • 머신러닝 배워볼래요?
  • python
  • 통계
Samuel Jeon 댓글 1 좋아요 0 조회수 407

초기설정 오류 질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

현재 노드 버전이 올라가서 노드도 16.17로 내리고 나머지도 다 버전 내려서 버전에 맞게 설정하고 yarn add next@12.1.0 react@17.0.2 react-dom@17.0.2 --exact 까지 했는데 노션에 있는 것 처럼 페이지와 api 여러 등등이 뜨지 않습니다 뭐가 문제일까요?ㅠㅠ

  • react
  • nodejs
  • graphql
  • seo
  • Next.js
댓글 1 좋아요 0 조회수 364

post 로 id, password 전송시 => 크롬 개발자 도구, 네트워크, Request 에 보면 id, password 가 그대로 노출되는데 숨길순 없나요?

미해결

[리뉴얼] React로 NodeBird SNS 만들기

post 로 id, password 전송시 => 크롬 개발자 도구, 네트워크, Request 에 보면 id, password 가 그대로 노출되는데 숨길순 없나요? 브라우저를 사용하는 유저가 보낸 거기 때문에 보안을 안해도 상관없을까요?

  • Next.js
  • react
  • express
  • nodejs
  • redux
mkp0131 댓글 1 좋아요 0 조회수 1395

vue project에서 chrome performance tab 확인하기

해결됨

프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 1

제공해주신 예제 파일에서는 performance tab으로 돌려보면 어떤 컴포넌트의, 어떤 메서드인지 알 수 있는데 vue app을 실행시키고 똑같이 돌려보면 "컴파일 코드" 라고만 되어 있어서 이게 어떤 메서드인지 알 수가 없습니다. 이런 경우에는 어떻게 식별할 수 있을까요? 혹은 어떤 설정을 바꾸면 될까요?

  • devtools
  • react
코멘토(comento) 댓글 1 좋아요 1 조회수 516

"크롬이 자동화된 프로그램에 의해 제어되고 있다며" 실행을 중단시킵니다. 실행 중단을 혹시 막을수는 없을까요?

미해결

웹 자동화 프로그램 만들기(파이썬 + 셀레니움)

from selenium import webdriver driver = webdriver.Chrome("./chromedriver") 이렇게 치면 화면이 잠깐 떳다가 바로 중단되서 사라지는데 실행 중단을 막을수 없을까요?

  • selenium
  • python
안현정 댓글 2 좋아요 1 조회수 2217

append함수, expend 함수, 함수의 동기화...?

해결됨

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

append 함수를 사용하면 (10)을 사용하면 마지막에 10을 넣고 ('10')을 사용하면 '10'을 넣었습니다 (asdf)를 사용하면 오류가 나던데 인트형, 실수형이나 ''가 붙어야 사용 가능한가요? 또한 extend 함수에서 a.extend(b) print('a.extend(a)=',a) 라고 적으면 오류가 나지 않았지만 print('a.extend(a)=',a.extend(b)) 는 none라는 문장만 나왔습니다. extend는 따로 실행을 시켜 줘야 되는 함수 인가요? 마지막으로 처음에 b=a를 해놓고 a만 append, sort, reverse 등 함수를 적용시켰으나 마지막에 보니 b도 같이 변환되어 있었습니다. 여태 것 다른 함수들은 b=a를 한 후 a값을 변동시켜도 b의 값은 초기 a값 그대로였는데 b도 같이 변화시키는 함수들이 따로 있는건가요??

  • python
정호윤 댓글 1 좋아요 0 조회수 489

바둑이 승차문제

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

안녕하세요! 바둑이 승차 문제 풀이 영상을 보고 다른 풀이로도 한번 풀어봤는데 예제 입출력대로는 제대로 나오는데 혹시 제 풀이가 맞는지 질문하고자 코드를 올립니다. C,N=map(int,input().split()) weights=[] result=[] for _ in range(N): weights.append(int(input())) def dfs(L,sum): if sum>C: return if L==N: result.append(sum) else: dfs(L+1,sum+weights[L]) dfs(L+1,sum) dfs(0,0) print(max(result))

  • 다른풀이
  • python
  • dfs
  • 코테 준비 같이 해요!
eun970923 댓글 2 좋아요 1 조회수 498

실습코드

해결됨

[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지

제2강에 있는 실습코드는 어떻게 다운로드 받는건가요?? 호형님 아이디 비번이 있는건가요?? 제가 찾아봐도 잘 모르겟네요.

  • python
  • 딥러닝
  • 머신러닝 배워볼래요?
  • pytorch
  • 인공신경망
Ramnant 댓글 2 좋아요 1 조회수 376

안녕하세요

해결됨

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

오늘부터 수업을 듣기 시작했는데 강의 자료가 없습니다. 으로 보내주실 수 있으실까요? 그리고 vscode를 사용해봐서 atom을 사용해 보려고 하는데 크롬에 검색해봐도 설치하는 곳이 나오지 않습니다. 더 이상 사용하지 않는 프로그램 인가요?

  • python
정호윤 댓글 1 좋아요 0 조회수 292

geojson 좌표 문제

미해결

공공데이터와 Folium(Python Library)으로 만드는 제주 오름 지도 안내 서비스

위 이미지는 강의에서 만드신 geojson파일이고 아래 이미지는 제가 만든 geojson파일입니다. 같은 방법을 사용했고 좌표계도 바꿔보고 이렇게 저렇게 시도를 해봐도 좌표가 서로 다르게 나와서 안되는데 좌표를 같게 하려면 해야할까요? 내보내기 할 때 좌표계 EPSG:4326 - WGS 84로 했습니다.

  • 웹앱
  • python
  • folium
  • QGIS
커닼 댓글 0 좋아요 1 조회수 435

강의자료 요청드립니다.

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

강의 자료 부탁드리겠습니다. 감사합니다. pr2tty_mj@naver.com 입니다.

  • python
댓글 1 좋아요 0 조회수 242

aiohttp 동시 요청 수 제한 관련

미해결

파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)

안녕하세요. 강의 잘들었습니다! 강의 내용 토대로 비동기로 API 수집을 구현했었는데 API 서버가 제가 보낸 모든 요청을 처리하지못해 오류 발생하여 요청 수를 제어하려고 합니다. 예를 들어들어 각기 다른 파라미터로 서버에 요청해야 할 수가 총 1000번이라면 1초당 10개씩만 요청하려고 합니다. 이럴 경우에는 어떻게 구현하는게 좋을까요? semaphore 사용해서 하는게 맞는건지 아님 aiohttp.BaseConnector 의 limit 수 파라미터를 조정하는게 맞는건지 궁금합니다. https://docs.aiohttp.org/en/stable/client_reference.html#baseconnector 그리고 한번에 요청 보내는 수뿐만아니라 요청보내는 간격에 대해서도 제어하려면 어떻게하면 좋을지 의견부탁드립니다!

  • aiohttp
  • python
  • FastAPI
  • 동시성
janus 댓글 1 좋아요 0 조회수 398

firebase 오류

미해결

따라하며 배우는 리액트, 파이어베이스 - 채팅 어플리케이션 만들기[2023.12 리뉴얼]

Firebase: Need to provide options, when not being deployed to hosting via source. (app/no-options). registerPage에서 넘어가지 않고 이런 오류가 계속 뜨는데 아무리 찾아봐도 안 나오네요,,

  • react
  • 웹앱
  • firebase
정혜진 댓글 1 좋아요 0 조회수 1035

웹소켓 동작 방식에 대해 질문이 있습니다.

미해결

파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편

웹소켓부분은 처음 배워봐서 조금 헷갈리네요 ㅠㅠ app의 views에서 렌더링 된 echo_page.html은 클라이언트를 의미 그 클라이언트에서 ws객체를 이용해 여러가지 이벤트 핸들러 처리와 메세지를 웹소켓 서버(ws:// localhost:8000/ws/echo/)로 전송할 수 있음 웹소켓 서버로 전송된 메세지는 routing.py에 등록된 path에 맞게 매칭된 Consumer를 호출 호출된 Consumer는 receive 오버라이딩을 통해 클라이언트에서 보낸 메세지에 대해 후속 처리 이 프로세스로 흘러가는게 맞나요? 한 가지 더 궁금한 점은 이번 예제의 EchoConsumer에서 send로 보낸 메세지는 단순히 '메세지 전송 요청을 보냈던' 클라이언트에게 되돌아가는데 만약 서로 다른 여러 클라이언트에서 요청이 들어오면 각 클라이언트는 어떻게 구별하나요? http의 헤더처럼 요청 주체를 구별하는 방법이 웹소켓 통신에도 따로 있는건가요?

  • django-channels
  • django
  • python
양념치킨 댓글 2 좋아요 0 조회수 718

외부데이터 연결

해결됨

QGIS 파이썬 자동화 (벡터편) Ver.2

안녕하세요 동영상을 보고 파이썬 콘솔에서 shp파일로는 불러와서 작업하는 아주 유용하게 사용하고 있습니다~ 그런데 궁금한건 외부데이터(csv,txt .. )등의 x,y값을 이용하여 python으로 포인트를 만들고자 한다면 어떻게 하나요???

  • python
  • QGIS
  • GIS
이미진 댓글 1 좋아요 1 조회수 552

toHaveTextContent 에서 에러가 자꾸 나는데 아무리 찾아도 잘 모르겠습니다.

해결됨

따라하며 배우는 리액트 테스트 [2023.11 업데이트]

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 안녕하세요! 강의 너무 잘 듣고 있습니다! 감사해요 오류를 잡으려고 노력해봤는데도 잘 안돼서 질문 남깁니다 calculate.test.js파일의 toHaveTextContent()부분에서 모두 오류가 나고 있습니다. 선생님이 주신 소스코드와 제 코드를 모두 비교해봤는데 다 똑같더라구요. 제가 인지하지 못한 오류가 있는지 한 번 봐주실 수 있으실까요? 부탁드립니다ㅜ 오류 부분 calculate.test.js import { render, screen } from "../../../test-utils"; import userEvent from "@testing-library/user-event"; import Type from "../Type"; import OrderPage from "../OrderPage"; test("update products total when products change", async () => { render(<Type orderType="products" />); const productsTotal = screen.getByText("상품 총 가격: ", { exact: false }); expect(productsTotal).toHaveTextContent("0"); // 아메리카 여행 상품 한개 올리기 const americaInput = await screen.findByRole("spinbutton", { name: "America", }); userEvent.clear(americaInput); userEvent.type(americaInput, "1"); // 이 상품을 하나 산다는 뜻 expect(americaInput).toHaveTextContent("1000"); }); - Type.js import React, { useContext, useEffect, useState } from "react"; import Products from "./Products"; import axios from "axios"; import ErrorBanner from "../../components/ErrorBanner"; import Options from "./Options"; import { OrderContext } from "../../contexts/OrderContext"; const Type = ({ orderType }) => { const [items, setItems] = useState([]); const [error, setError] = useState(false); const [orderDatas, updateItemCount] = useContext(OrderContext); // OrderContext.js의 return [{ ...orderCounts, totals }, updateItemCount]; 을 구조분해 useEffect(() => { loadItems(orderType); }, [orderType]); const loadItems = async (orderType) => { try { let response = await axios.get(`http://localhost:5000/${orderType}`); setItems(response.data); } catch (error) { setError(true); } }; if (error) { return <ErrorBanner message="에러가 발생했습니다" />; } const ItemComonents = orderType === "products" ? Products : Options; const optionItems = items.map((item) => ( <ItemComonents style={{ border: "2px solid red" }} key={item.name} name={item.name} imagePath={item.imagePath} updateItemCount={(itemName, newItemCount) => updateItemCount(itemName, newItemCount, orderType) } /> )); let orderTypeKorean = orderType === "products" ? "상품" : "옵션"; return ( <div> <h2>주문종류</h2> <p>하나의 가격</p> <p> {orderTypeKorean} 총 가격: {orderDatas.totals[orderType]} </p> <div style={{ display: "flex", flexDirection: orderType === "options" && "column", // }} > {optionItems} </div> </div> ); }; export default Type; orderContext.js import { createContext, useState, useMemo, useEffect } from "react"; export const OrderContext = createContext(); const pricePerItem = { products: 1000, options: 500, }; function calculateSubtotal(orderType, orderCounts) { let optionCount = 0; for (const count of orderCounts[orderType].values()) { optionCount += count; } return optionCount * pricePerItem[orderType]; } export function OrderContextProvider(props) { const [orderCounts, setOrderCounts] = useState({ products: new Map(), options: new Map(), }); const [totals, setTotals] = useState({ products: 0, options: 0, total: 0, }); useEffect(() => { const productsTotal = calculateSubtotal("products", orderCounts); const optionsTotal = calculateSubtotal("options", orderCounts); const total = productsTotal + optionsTotal; setTotals({ products: productsTotal, options: optionsTotal, total, }); }, [orderCounts]); const value = useMemo(() => { function updateItemCount(itemName, newItemCount, orderType) { const newOrderCounts = { ...orderCounts }; const orderCountsMap = orderCounts[orderType]; orderCountsMap.set(itemName, parseInt(newItemCount)); setOrderCounts(newOrderCounts); } return [{ ...orderCounts, totals }, updateItemCount]; }, [orderCounts, totals]); return <OrderContext.Provider value={value} {...props} />; }

  • React-Context
  • 웹앱
  • react
  • jest
sos 댓글 2 좋아요 0 조회수 664

adb kill-server 후 adb start-server 해도 실행이 안되네요..

미해결

따라하며 배우는 리액트 네이티브 기초

안드로이드 에뮬레이터를 실행하려고하는데 에러가 나서 첨엔 adb 명령어도 안되서 brew install android-platform-tools 명령어로 설치한담에 위 제목같이 명령어 실행후 다시 해봤는데도 안되네요. 어떻게 해야 에뮬레이터가 실행 될까요? ㅠㅠ -> 아예 지우고 2강 전부터 다시 만들어서 실행하니 되는거같네요 ㅠㅠ

  • react-native
  • react
  • expo
BYOUNGGOOG KANG 댓글 5 좋아요 2 조회수 4101

인기 태그

인프런 TOP Writers

주간 인기글