원격 디버거와 연결할 수 없습니다


149

React.JS를 사용하고 있으며 react-native run-android(장치가 연결된 상태에서) 빈 페이지가 표시됩니다. 장치를 흔들고 Debug JS Remotely옵션 목록에서 선택 하면 다음 화면이 표시됩니다.

여기에 이미지 설명을 입력하십시오

참고 사항 :

OS: Ubuntu 16.04
Node version is: v4.6.2
java version "1.8.0_111"
react": "15.4.1
react-native": "0.38.0

1
Android react-native start에서는 서버를 시작하려면 별도의 창에서 실행해야 합니다.
Aleksandar Popovic

compile "com.facebook.react:react-native:+"컴파일 섹션에서 이것을 변경하는 것은 어떻습니까?
사탄 판 데야

dev 메뉴에서 "debug"를 활성화해야합니다
UA_

답변:


280

필자의 경우 문제는 에뮬레이터가 다음을 요청한다는 것입니다.

http://10.0.2.2:8081/debugger-ui

대신에:

http://localhost:8081/debugger-ui 요청이 실패했습니다.

문제를 해결하려면 에뮬레이터 에서 원격 디버깅을 활성화하기 전에http://localhost:8081/debugger-ui 크롬으로 엽니 다 . 그런 다음 원격 디버깅을 활성화하고 콘솔 로그가 표시되는 크롬 페이지로 돌아갑니다.


1
나를 위해 일했다 – thx! 크롬 탭을 먼저 열지 않도록 항상 localhost에 연결하려고 시도하는 방법을 찾았습니까?
izikandrw

26
에뮬레이터에서 개발자 설정 (Ctrl + M)으로 이동하여 디버그 서버를 'localhost : 8081'로 변경할 수 있습니다.
DannyMoshe

마지막 단락은 나를 위해 일한 유일한 것입니다.
Pedro Otero

3
감사합니다. 처음에는 어떻게 10.0.2.2로 설정됩니까?
charlieb

3
에뮬레이터에서 'localhost'를 요청하면 PC가 아닌 에뮬레이터의 루프백 포트에 액세스하려고합니다 (PC의 루프백을 원함). 이 문제를 해결하기 위해 android는 PC에서 실행되는 서비스에 액세스 할 수 있도록 별칭 10.0.2.2를 만듭니다 ( doc 참조는 developer.android.com/studio/run/emulator-networking 참조). 요청이 실패한 이유는 확실하지 않지만 react / android에 대한 문서화 된 문제인 것 같습니다 ( github.com/facebook/react-native/issues/17970 참조) .
DannyMoshe 22시 29 분

181

다음과 같은 문제를 해결했습니다.

  • Cmd + M에뮬레이터 화면에서 누르십시오
  • 이동 Dev settings > Debug server host & port for device
  • 세트 localhost:8081
  • Android 앱을 다시 실행하십시오. react-native run-android

디버거가 연결되었습니다!


CMD + M 버튼이 작동하지 않는 데 문제가있는 사람들을 위해 adb가있는 쉘에서 './adb shell input keyevent 82'를 사용하여 트리거했습니다. 그 후 바로 가기 키가 작동하기 시작했습니다!
Jeff L

당신 은 피의 전설입니다. x
NewbieAid

이제는 원격 디버거에 연결하려고합니다 ... 영원을 위해
Fakebounce

44

나는이 일을 해결 adb reverse tcp:8081 tcp:8081다음과 reload내 전화에.


36

필자의 경우 Debug JS Remote를 선택하면 Chrome이 시작되었지만 안드로이드 장치와 연결되지 않았습니다. 일반적으로 새 Chrome 탭 / 창은 주소 표시 줄에 디버깅 URL이 미리 채워져 있지만이 경우 주소 표시 줄은 비어 있습니다. 시간 초과 기간이 지나면 "원격 디버거로 연결할 수 없습니다"오류 메시지가 표시되었습니다. 나는 다음 절차로 이것을 고쳤다.

  • 운영 adb reverse tcp:8081 tcp:8081
  • http://localhost:8081/debugger-uiChrome 브라우저의 주소 입력란에 붙여 넣 습니다. 정상적인 디버깅 화면이 표시되지만 앱이 여전히 연결되지 않습니다.

문제를 해결해야합니다. 그렇지 않은 경우 다음 추가 단계를 수행해야합니다.

  • Android 기기에서 앱을 닫고 제거
  • 로 앱을 다시 설치하십시오. react-native run-android
  • 앱에서 원격 디버깅을 활성화하십시오.
  • 이제 앱이 디버거에 연결되어 있어야합니다.

2
톰 ... 감사합니다! 이 전에 내 IP 주소를 설정했습니다 ( "Dev 설정"-> "장치의 디버그 서버 호스트") xxxx : 8081
atreeon

11

나는이 문제로 이어지는 비슷한 문제가있었습니다. 브라우저 디버거에서 다음 오류 메시지가 나타납니다.

CORS 정책에 의해 ' http://127.0.0.1:8081 '의 ' http : // localhost : 8081 / index.delta? platform = android & dev = true & minify = false '에서 가져 오기에 대한 액세스 가 CORS 정책에 의해 차단되었습니다 : 아니요 '액세스 제어 요청 된 리소스에 -Allow-Origin '헤더가 있습니다. 불투명 한 응답이 사용자의 요구를 충족시키는 경우 요청 모드를 'no-cors'로 설정하여 CORS가 비활성화 된 상태에서 리소스를 가져옵니다.

내가 127.0.0.1:8081대신 사용하고 있음을 깨닫는 데 시간이 걸렸습니다.localhost:8081디버거 .

문제를 해결하기 위해 Chrome을 다음과 같이 변경해야했습니다.

http://127.0.0.1:8081/debugger-ui/

http://localhost:8081/debugger-ui/

1
실제로 저에게는 반대였습니다. 그러나 실제로 "localhost"는 일반적으로 127.0.0.1과 같습니다. localhost로 주소에 설정된 내용에 따라 다릅니다. 그래도 항상 명시하는 것이 좋습니다
Carmine Tambascia

2

번들을 제공 할 노드 서버가 백그라운드에서 실행 중인지 확인하십시오. 서버 사용을 시작 npm start하거나 react-native start개발 중에 탭을 열어 두려면


1
여전히 작동하지 않습니다. 두 터미널 모두 오류를 반환하지
않음

1
당신은 프록시 서버 나 찰스와 같은 프록시 소프트웨어를 ... 실행을 중지 그들있는 경우
Chethan N

아니요, 프록시를 실행하지 않습니다
splunk

2

내 경우는 원격 JS 디버깅 사용을 탭하면 크롬이 시작되지만 연결할 수는 없다는 것입니다.

나는 달리려고 노력했다.

adb reverse tcp:8081 tcp:8081 

작동했지만 작동하지 않았습니다.

크롬을 완전히 제거하고 새 크롬을 설치했습니다. 그리고 작동합니다.


1
  1. 반응 네이티브 시작-재설정-캐시 한 탭에서 하고 다른 탭에서는 반응 네이티브 실행 안드로이드
  2. adb reverse tcp : 8081 tcp : 8081 (따라서 스크립트에 추가하고 실행할 수 있습니다) 원사 실행 adb-reverse를 실행할 )
  3. 안드로이드를 사용하는 경우 전화를 흔들지 않고 adb 명령을 실행하는 것이 좋습니다 .

따라서 다음을 실행할 수 있습니다.

  • adb shell input keyevent 82 ( 메뉴 옵션 )
  • adb shell input keyevent 46 46 ( 다시로드 )

1

여기에있는 다른 대답은 나에게 중요한 단계가 누락되었습니다. AndroidManifest.xml에서 usesCleartextTraffic을 추가해야했습니다.

    <application
      ...
      android:usesCleartextTraffic="true">

안전하지 않은 http 요청을 지원하지 않는 한 앱의 프로덕션 릴리스에서 이것을 유지하고 싶지 않을 것입니다.

이것을 AndroidManifest.xml에 추가 한 후 Tom Aranda의 답변을 따르고 에뮬레이터가 마침내 디버거에 연결할 수있었습니다.


0

@sajib 대답 하고이 스크립트를 사용하여 포트를 리디렉션합니다.

#!/usr/bin/env bash

# packager
adb reverse tcp:8081 tcp:8081
adb -d reverse tcp:8081 tcp:8081
adb -e reverse tcp:8081 tcp:8081

echo "🚧 React Native Packager Redirected 🚧"


0

전문 개발자가 특별히 Ribamar Santos제공 한 모든 인상적인 답변을 제공합니다. 작동하지 않으면 더 까다로운 것을 확인해야합니다!

Airplane mode당신의 (에뮬레이트 된) 전화 와 같은 것 ! 또는 네트워크를 표현하지 않기 위해 조작 될 수있는 귀하의 network status of Emulator( Data status and Voice status on Cellular tab of Emulator configuration)! 일부 에뮬레이션 요구에!

이 트릭 으로이 문제를 극복했습니다! 이 구멍을 찾는 것은 약간 숨막히는 디버그였습니다!


0

내 경우에는 npm 패키지도 설치해야합니다.

그래서

npm install react-native-debugger -g

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.