inflearn logo
강의

Course

Instructor

Delivery App Clone Coding [with React Native]

Troubleshooting react-native-config

wifi 환경에서 axios 통신이 로컬서버에서 안됩니다.

425

robot40977135

4 asked

0



안녕하세요 강사님 강사님의 리액트 네이티브 강의를 보면서

직접 자신만의 리액트 네이티브 프로젝트도 직접 다뤄보면서 하고 있는 학생입니다.

https://github.com/Dongrang072/carPoolTeamProject-server

이게 로컬 서버의 코드이고

 

https://github.com/Dongrang072/carpoolTeamProject

이게 프론트의 코드입니다

 

axios 통신에 현재 문제가 있습니다.

동일한 코드인데도 wi-fi로 인터넷이 연결되는 노트북의 환경에서는 http:10.0.0.2로 접속이 안되고,

로그캣을 보니 두 요청이 확연하게 달랐는데

모든 api를 axios로 요청 시에 와이파이 환경에서만 되질 않았습니다

 

로그캣.png.webp

이건 랜선에서 연결된 pc에서 로컬 서버와 통신 시 요청에서 성공했을 때의 로그캣 로그이고

로그캣-노트북에서.png.webp

이건 와이파이 환경의 노트북에서 로컬 서버와 통신했을 시에 생기는 로그캣 로그입니다

 

혹시나 해서 프로젝트 루트 폴더의 androidManifestxml의 파일에 누락된게 있나 봤는데

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android">     <uses-permission android:name="android.permission.INTERNET"/>     <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>     <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>     <application             android:usesCleartextTraffic="true"             android:name=".MainApplication"             android:label="@string/app_name"             android:icon="@mipmap/ic_launcher"             android:roundIcon="@mipmap/ic_launcher_round"             android:allowBackup="false"             android:theme="@style/AppTheme"             >         <!-- Google Maps API Key -->         <meta-data                 android:name="com.google.android.geo.API_KEY"                 android:value="@string/GOOGLE_MAPS_API_KEY"/>         <activity                 android:name=".MainActivity"                 android:label="@string/app_name"                 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"                 android:launchMode="singleTask"                 android:windowSoftInputMode="adjustResize"                 android:exported="true">             <intent-filter>                 <action android:name="android.intent.action.MAIN"/>                 <category android:name="android.intent.category.LAUNCHER"/>             </intent-filter>         </activity>      </application> </manifest> 

이상은 없는 것 같습니다....

혹시 방화벽의 문제인가요?

 

노트북으로 실행시에 직접 ipConfig로 내부 ip(ip4)를 이용해서 api를 호출해봤는데도 여전히 network 오류가 뜹니다

 

 

 LOG  Verification code response: <HTML> <HEAD> <TITLE>GiGA WiFi home</TITLE> <LINK REL="shortcut icon" HREF="icon.ico" TYPE="image/x-icon"> <LINK REL="icon" HREF="icon.ico" TYPE="image/x-icon"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script language='JavaScript' type='text/javascript' src='/script/jquery.js?version=Aug252023180743'></script> <script language='JavaScript' type='text/javascript' src='/script/jquery-migrate-1.2.1.min.js?version=Aug252023180743'></script> <script language='JavaScript' type='text/javascript' src='/script/mcr_common_new.js?version=Aug252023180743'></script> <script language='JavaScript' type='text/javascript' src='/script/mcr_common.js?version=Aug252023180743'></script> <script language='JavaScript' type='text/javascript' src='/script/mcr_common_kt.js?version=Aug252023180743'></script> <script language='JavaScript' type='text/javascript' src='/script/mcr_jq_util.js?version=Aug252023180743'></script>  <style type="text/css"> <!-- a { font-style:normal; font-weight:normal; text-decoration:none; } body {         margin-left: 10px;         margin-top: 10px;         margin-right: 10px;         margin-bottom: 10px;         background-color: #ffffff; }  .table {         border-top-width: 2px;         border-top-style: solid;         border-top-color: #333333; } .font100 {         FONT-FAMILY: "돋움",  "arial";         FONT-SIZE: 14px;         LINE-HEIGHT: 14pt;         COLOR: #000000 } .font101 {         FONT-FAMILY: "돋움",  "arial";         FONT-SIZE: 12px;         LINE-HEIGHT: 12pt;         COLOR: #666666 } -->   </style> <script language="JavaScript" type="text/javascript" src="/script/jquery.js"></script> <script language="JavaScript" type="text/javascript" src="/script/captcha.js?version=Aug252023180743"></script> <script type="text/javascript" src="/lang/b28n.js"></script> <script type="text/javascript">  Butterlate.setTextDomain("main");  redirectTopWindow(); var UserPrivilege = getUserPrivilege(); var Privilege = parseInt(UserPrivilege, 10);  function redirectTopWindow(){         if( top != self ){                 var URL = "http://" + window.location.host;                 top.location.replace(URL);         } } var captcha;  function CheckAll() {         if("8899" == window.location.port){                 if( captcha.validate( $("input[name='captchatext']").val() ) == true ){                         if(document.Login.UserID.value == "")                         {                                 alert("사용자ID를 확인해 주세요.");                                 document.Login.UserID.focus();                                 return false;                         }                         if(document.Login.Password.value == "")                         {                                 alert("비밀번호를 확인해 주세요.");                                 document.Login.Passw

직접적으로 front내의 src 파일의 api/auth.ts 내의 이메일 post 관련 함수를

 

const sendVerificationCode = async (email: string): Promise<string> => {
    try {
        console.log('Sending verification code request:', email);

        const response = await axiosInstance.post("http://10.0.0.2/mail/send-code", {
            email: email.trim()  // 이메일을 서버에 전달
        });

        console.log('Verification code response:', response.data);
        return response.data;  // 반환된 인증 코드 반환
    } catch (error: any) {
        console.error('Verification code error:', {
            email,
            error: error.message,
            response: error.response?.data
        });
        throw new Error(
            error.response?.data?.message ||
            '인증 코드 전송에 실패했습니다.'
        );
    }
};

http://10.0.0.2를 명시했더니 res data를 console.log로 찍으니 이렇게 나왔습니다

json으로 받아야 하는데 왜 res가 html 형식으로 받아진건지 모르겠습니다 덤으로 smtp로 설정했던

이메일 인증 코드는 실제 이메일에 오지 않은 상태입니다. html 로그 관련은 인프런에서 질문 글에 1만자 이하로 제한되어있어서 어느정도 삭제했습니다

react-native

Answer 2

0

zerocho

지금 환경이 에뮬레이터인가요? 실기기인가요?

https://github.com/facebook/react-native/issues/36094

비슷한 이슈는 이거 하나만 있는데 해결책은 없네요.

일단 10.0.0.2 대신에 127.0.0.1이나 localhost로도 시도해보세요. 노트북에 랜선을 꼽는 경우도 테스트해봐야할 것 같습니다.

0

robot40977135

현재 에뮬레이터에서 실행중이고
에뮬레이터-로컬서버-로컬db 간에 통신이 안되는 중입니다.
127.0.0.1이나 localhost로도 시도해보해봤는데 안됩니다.
현재 랜선을 직접 꽂아서 노트북에서 캐시를 다시 지우고, 안드로이드 스튜디오에서 캐시도 지우고 새 에뮬레이터 기기로 연결을 하고 통신을 시도했는데 여전히
pipe는 그대로인 상태이고 wifi_bound에서 여전히 오류 로그가 납니다.
랜선으로 연결된 데스크탑과 와이파이 노트북의 네트워크 환경 차이에 의해서 이런것일까요?
adb reverse tcp:3000 tcp:3000 로 3000포트에(로컬 서버 포트)에 에뮬레이터를 포트포워딩 했는데도 여전히 오류가 납니다

0

zerocho

네트워크 관련 이슈로 보이는데 검색해봐도 정보가 너무 부족하네요

0

robot40977135

결국 어쩔 수 없이 데스크탑의 환경으로 개발해야겠네요... 혹시 앱을 배포하지 않고 릴리즈 모드로 와이파이 환경의 네트워크에서 테스트 할 시에 이런 문제가 또 생기진 않을까 걱정입니다.

0

robot40977135

현재 질문글 수정한거와 같이 직접 10.0.0.2로 설정했을 시에 json이 아니라 html 형식으로 받아지는거 같습니다

0

zerocho

지금 보시면 html이 Giga WIFI Home이라는 사이트입니다. 10.0.2.2가 해당 주소를 가리키는 것 같습니다.

0

zerocho

아, 지금보니까 10.0.0.2로 하고계신데 10.0.2.2입니다. 질문 내용의 단순 오타인가요? 아니면 진짜로 10.0.0.2로 하고계셨던 건가요?

0

robot40977135

아 오타입니다 10.0.2.2입니다

0

zerocho

하나 더 찾아낸 것이 있는데 10.0.2.2:3105 입니다. 포트를 안 쓰셨네요

0

robot40977135

.env에

포트.png.webp
import axios from 'axios';
import Config from "react-native-config";

const axiosInstance = axios.create({
    baseURL: Config.API_URL,
    withCredentials: true,
})

export default axiosInstance;



이런식으로 적용했는데 포트번호가 제대로 적용이 안되었던 것인가요?

 

혹시 몰라서 Config를 콘솔로그로 찍어봤는데

Config로그.png.webp


10.0.2.2:3000으로 잘 나오는거 같습니다. 서버 포트도 3000으로 맞췄습니다

0

zerocho

const response = await axiosInstance.post("http://10.0.0.2/mail/send-code", { email: email.trim() // 이메일을 서버에 전달 });

여기에 env 값을 안 쓰셨습니다.

0

robot40977135

아 그땐 오타냈었었고 실제로는

http://10.0.2.2:3000/mail/send-code 이렇게 했었는데도

Wifi_forwarder 에러 로그가 로그캣에 출력되었습니다

0

robot40977135

해결되었습니다 왜인지는 모르겠지만 재부팅 몇번 하니깐 환경변수가 제대로 불러와져서 되었네요. 바로 반영이 안되었던것 같습니다. 도와주셔서 감사합니더

0

communityai8509

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

Wi-Fi 환경에서의 axios 통신 문제는 다양한 원인으로 발생할 수 있습니다. 주로 고려해야 할 요소들은 다음과 같습니다:

  1. 내부 IP 주소 확인: Wi-Fi 환경에서는 PC나 노트북의 내부 IP가 변경되는 경우가 있습니다. 반드시 현재 연결된 네트워크의 내부 IP 주소를 확인하시고, axios 요청 URL에 올바르게 설정되어 있는지 확인해 주세요.

  2. 방화벽 설정: Wi-Fi 네트워크의 방화벽이 로컬 서버와의 통신을 차단할 수 있습니다. 방화벽 설정에서 로컬 서버 포트가 외부에서 접근 가능하도록 허용되어 있는지 확인하세요.

  3. 명확한 네트워크 설정 확인: 특히 서버가 실행 중인 PC와 클라이언트를 실행하는 노트북이 동일한 네트워크에 있는지, 동일한 서브넷에 있는지 확인해야 합니다. 만약 네트워크가 분리되어 있다면 통신이 안 될 수 있습니다.

  4. IP 주소 및 포트의 명시적 설정: AndroidManifest.xml에서 usesCleartextTraffic이 true로 설정되어 있다는 것은 HTTP로 통신하도록 허용한 상태입니다. 하지만, IP 주소나 포트가 정확하지 않다면 요청이 성공하지 않을 수 있습니다. PC에서는 제대로 작동하는 것처럼 로그에 보인다고 하셨으니, 노트북의 IP 주소가 제대로 설정된 것인지 다시 한 번 확인해보세요.

다행히 이러한 문제는 개발 커뮤니티에서 흔히 겪는 이슈 중 하나이므로, 추가로 다음의 링크들을 통해 도움을 받을 수도 있습니다:

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

앱실행시 네이버맵 [401] 에러

0

914

2

스타일링 라이브러리

0

143

2

expo, cli 선택 중에 고민이 있습니다.

0

166

2

JDK 버전이 달라도 괜찮나요?

0

222

2

dimenstion usewindowdeminstion

0

118

3

[맥 전용]환경 설정하기 1편 & [맥 전용]환경 설정하기 2편의 영상이 안나옵니다.

0

208

1

jdk11 버전과 gradle 버전의 호환성 관련 질문드립니다.

0

398

2

강의 외 질문입니다!

0

155

2

react native랑 맞는 ui 라이브러리 어떤게 좋을까요?

0

1470

2

react native와 spring boot 연결

0

352

1

java가 아닌 .kt에서 code push 에러가 발생합니다.

0

207

2

flipper 239 에러가 발생합니다.

0

161

2

package.json에 /lib/panino.js 문제입니다.

0

461

2

window - mac 협업 과정 질문합니다

0

213

1

ios 빌드 중 RCTBridgeDelegate.h import 오류

0

287

2

ios 앱 빌드 중 hermesEnabled 관련 오류발생

0

237

2

Socket 연결시 질문 드립니다.!

0

150

2

iOS render error 질문드립니다.

0

408

2

iOS 가상머신 오류

0

161

2

npc react init 명령어 실행시 발생되는 오류

0

216

1

nom start 시 오류

0

112

1

NextJS 기반으로 만들어서 웹뷰 React Native로 배포 가능한가요?

0

984

2

안드로이드 rn75 버전에 맞게 설정 중에 android13 다운로드에 대해서 막혔습니다!

0

179

2

foreground 상태일 떄 push alert notification 질문

0

547

2