ไม่สามารถเชื่อมต่อกับดีบักเกอร์ระยะไกล


149

ฉันใช้ React.JS และเมื่อฉันทำreact-native run-android(เสียบอุปกรณ์ของฉัน) ฉันเห็นหน้าว่าง เมื่อฉันเขย่าอุปกรณ์และเลือกDebug JS Remotelyจากรายการตัวเลือกที่ฉันเห็นหน้าจอต่อไปนี้

ป้อนคำอธิบายรูปภาพที่นี่

FYI:

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:+"ในส่วนของการคอมไพล์
Satan Pandeya

คุณควรเปิดใช้งาน "debug" ในเมนู dev
UA_

คำตอบ:


280

ในกรณีของฉันปัญหาคือตัวจำลองกำลังขอ:

http://10.0.2.2:8081/debugger-ui

แทน:

http://localhost:8081/debugger-ui และคำขอล้มเหลว

วิธีแก้ปัญหา: ก่อนเปิดใช้งานการดีบักแบบรีโมทบนอีมูเลเตอร์ของคุณให้เปิดhttp://localhost:8081/debugger-uiในโครเมี่ยม จากนั้นเปิดใช้งานการดีบักแบบรีโมทและกลับไปที่หน้าโครเมียมซึ่งคุณจะเห็นบันทึกคอนโซลของคุณ


1
ทำงานให้ฉัน - ขอบคุณ! คุณหาวิธีตั้งค่าให้พยายามเชื่อมต่อกับ localhost เสมอเพื่อหลีกเลี่ยงการเปิดแท็บ chrome ก่อนหรือไม่
izikandrw

26
คุณสามารถไปที่การตั้งค่า Dev (Ctrl + M) บนอีมูเลเตอร์ของคุณและเปลี่ยนเซิร์ฟเวอร์ดีบั๊กเป็น 'localhost: 8081'
DannyMoshe

ย่อหน้าสุดท้ายเป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน
Pedro Otero

3
ขอบคุณ. มันตั้งเป็น 10.0.2.2 ตั้งแต่แรกได้อย่างไร?
charlieb

3
คำขอไปยัง 'localhost' ที่ทำจากอีมูเลเตอร์ของคุณจะพยายามเข้าถึงพอร์ตลูปแบ็คบนอีมูเลเตอร์ไม่ใช่บนพีซีของคุณ (คุณต้องการลูปแบ็คของพีซีของคุณ) เพื่อแก้ไขปัญหานี้ Android สร้างนามแฝง 10.0.2.2 เพื่อให้คุณสามารถเข้าถึงบริการที่ทำงานบนพีซีของคุณ (ดูdeveloper.android.com/studio/run/emulator-networkingสำหรับการอ้างอิงเอกสาร) เท่าที่ว่าทำไมการร้องขอล้มเหลว im ไม่แน่ใจ แต่ดูเหมือนว่ามันเป็นปัญหาเอกสารที่มีการตอบสนอง / Android ดูgithub.com/facebook/react-native/issues/17970
DannyMoshe

181

แก้ไขปัญหาต่อไปนี้:

  • กดCmd + Mบนหน้าจออีมูเลเตอร์
  • ไปที่ Dev settings > Debug server host & port for device
  • ชุด localhost:8081
  • รันแอพ android อีกครั้ง: react-native run-android

ดีบักเกอร์เชื่อมต่อทันที!


สำหรับบรรดาของคุณที่มีปัญหากับปุ่ม CMD + M ไม่ทำงานฉันใช้ './adb shell input keyevent 82' ในเชลล์ที่ adb ตั้งอยู่เพื่อเรียกใช้ ปุ่มลัดเริ่มทำงานหลังจากนั้น!
Jeff L

คุณเป็นตำนานนองเลือด x
NewbieAid

ตอนนี้เป็นเพียงการพยายามเชื่อมต่อกับดีบักเกอร์ระยะไกล ... ชั่วนิรันดร์
Fakebounce


36

ในกรณีของฉันการเลือกDebug JS จากระยะไกลเปิดตัว Chrome แต่ไม่ได้เชื่อมต่อกับอุปกรณ์ android โดยปกติแท็บ / หน้าต่าง Chrome ใหม่จะมี URL การแก้ไขข้อบกพร่องอยู่ในแถบที่อยู่ล่วงหน้า แต่ในกรณีนี้แถบที่อยู่นั้นว่างเปล่า หลังจากรอบระยะเวลาการหมดเวลาข้อความแสดงข้อผิดพลาด "ไม่สามารถเชื่อมต่อกับดีบักเกอร์ระยะไกล" ได้แสดงขึ้น ฉันแก้ไขสิ่งนี้ด้วยขั้นตอนต่อไปนี้:

  • วิ่ง adb reverse tcp:8081 tcp:8081
  • วางhttp://localhost:8081/debugger-uiในช่องที่อยู่ของเบราว์เซอร์ Chrome ของฉัน คุณควรเห็นหน้าจอการดีบักปกติ แต่แอปของคุณจะยังไม่ได้เชื่อมต่อ

ที่ควรแก้ไขปัญหา หากไม่เป็นเช่นนั้นคุณอาจต้องทำตามขั้นตอนเพิ่มเติมดังต่อไปนี้:

  • ปิดและถอนการติดตั้งแอพจากอุปกรณ์ Android ของคุณ
  • ติดตั้งแอพอีกครั้งด้วย react-native run-android
  • เปิดใช้งานการดีบักแบบรีโมทบนแอปของคุณ
  • แอปของคุณควรเชื่อมต่อกับดีบักเกอร์แล้ว

2
ทอม ... ขอบคุณ! ก่อนหน้านี้ฉันจะตั้งค่าที่อยู่ IP ของฉัน ("การตั้งค่า Dev" -> "ดีบักโฮสต์เซิร์ฟเวอร์สำหรับอุปกรณ์") xxxx: 8081
atreeon

11

ฉันมีปัญหาที่คล้ายกันซึ่งทำให้ฉันมีคำถามนี้ ในการดีบักเกอร์เบราว์เซอร์ของฉันฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

การเข้าถึงการดึงข้อมูลที่ ' http: // localhost: 8081 / index.delta แพลตฟอร์ม = หุ่นยนต์และ dev = true & ลดขนาด = เท็จ? ' จากจุดกำเนิด ' http://127.0.0.1:8081 ' ได้ถูกปิดกั้นโดยนโยบายของ ธ : ไม่มี 'ควบคุมการเข้าถึง -Allow-Origin มีอยู่ในทรัพยากรที่ร้องขอ หากการตอบกลับทึบแสงตอบสนองความต้องการของคุณให้ตั้งค่าโหมดคำขอเป็น 'no-cors' เพื่อดึงข้อมูลทรัพยากรโดยปิดการใช้งาน CORS

ฉันใช้เวลาสักครู่เพื่อรู้ว่าฉันกำลังใช้127.0.0.1:8081แทนlocalhost:8081debugger ของฉัน

ในการแก้ไขปัญหาฉันต้องเปลี่ยน 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
ยังไม่ทำงาน เทอร์มินัลไม่ส่งคืนข้อผิดพลาดให้ฉัน
splunk

1
คุณใช้พร็อกซีเซิร์ฟเวอร์หรือซอฟต์แวร์พร็อกซีเช่น charles หรือไม่ให้หยุดถ้ามี
Chethan N

ไม่ฉันไม่ได้ใช้พร็อกซีใด ๆ เลย
splunk

2

กรณีของฉันคือเมื่อฉันแตะเปิดใช้งานการดีบัก JS ระยะไกลมันจะเปิด Chrome แต่ไม่สามารถเชื่อมต่อได้

ฉันพยายามวิ่งแล้ว:

adb reverse tcp:8081 tcp:8081 

แต่ไม่ได้ผล

ฉันถอนการติดตั้ง chrome ทั้งหมดและติดตั้ง Chrome ตัวใหม่ และมันใช้งานได้


1
  1. react-native start - รีเซ็ตแคช ในหนึ่งแท็บและreact-native run-android ในอีกแท็บหนึ่ง
  2. adb reverse tcp: 8081 tcp: 8081 (เพื่อให้คุณสามารถเพิ่มลงในสคริปต์ของคุณและเพียงแค่รันการรันเส้นด้าย adb-reverse )
  3. หากคุณใช้แอนดรอยด์แทนที่จะเขย่าโทรศัพท์ คำสั่ง adb

ดังนั้นคุณสามารถเรียกใช้:

  • คีย์การ์ดอินพุตของเชลล์ adb 82 ( ตัวเลือกเมนู )
  • adb shell inputevevent 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

ถอนการติดตั้งแอปพลิเคชันของคุณจากนั้นเรียกใช้ react-native run-android จากนั้นคลิกการดีบักสิ้นสุดในโครเมี่ยมแทนที่http: // localhost: 8081 / debugger-ui / , จบการทำงานแบบอ่านปฏิกิริยาพื้นเมือง-run-android หากคุณยังไม่ได้ลองอีกครั้ง


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.