Tidak dapat terhubung dengan debugger jarak jauh

149

Saya menggunakan React.JS dan ketika saya melakukannya react-native run-android(dengan perangkat saya terhubung) saya melihat halaman kosong. Ketika saya mengguncang perangkat dan memilih Debug JS Remotelydari daftar opsi saya melihat layar berikut.

masukkan deskripsi gambar di sini

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
splunk
sumber
1
Di Android Anda harus menjalankan di jendela terpisah react-native startuntuk memulai server.
Aleksandar Popovic
Bagaimana dengan mengubah ini: compile "com.facebook.react:react-native:+"pada bagian kompilasi.
Setan Pandeya
Anda harus mengaktifkan "debug" di menu dev
UA_

Jawaban:

280

Dalam kasus saya masalahnya adalah bahwa emulator membuat permintaan untuk:

http://10.0.2.2:8081/debugger-ui

dari pada:

http://localhost:8081/debugger-ui dan permintaan itu gagal.

Untuk mengatasi masalah ini: Sebelum mengaktifkan debugging jarak jauh pada emulator Anda , buka http://localhost:8081/debugger-uidi chrome. Kemudian aktifkan debugging jarak jauh dan kembali ke halaman chrome di mana Anda akan melihat log konsol Anda.

DannyMoshe
sumber
1
bekerja untuk saya - terima kasih! apakah Anda menemukan cara untuk mengaturnya agar selalu mencoba terhubung ke localhost untuk menghindari keharusan membuka tab chrome terlebih dahulu?
izikandrw
26
Anda dapat masuk ke Pengaturan Dev (Ctrl + M) pada emulator Anda dan mengubah server debug ke 'localhost: 8081'.
DannyMoshe
Paragraf terakhir adalah satu-satunya hal yang berhasil untuk saya.
Pedro Otero
3
Terima kasih. Bagaimana cara mengatur ke 10.0.2.2 di tempat pertama?
charlieb
3
Permintaan ke 'localhost' yang dibuat dari emulator Anda akan mencoba untuk mengakses port loopback pada emulator, bukan pada PC Anda (Anda ingin loopback dari PC Anda). Untuk mengatasi ini, android membuat alias 10.0.2.2 untuk memungkinkan Anda mengakses layanan yang berjalan di PC Anda (lihat developer.android.com/studio/run/emulator-networking untuk referensi dokumen). Sejauh mengapa permintaan gagal, saya tidak yakin, tetapi tampaknya ini adalah masalah yang terdokumentasi dengan react / android lihat github.com/facebook/react-native/issues/17970 .
DannyMoshe
181

Memecahkan masalah berikut:

  • Tekan Cmd + Mpada layar emulator
  • Pergi ke Dev settings > Debug server host & port for device
  • Set localhost:8081
  • Jalankan kembali aplikasi android: react-native run-android

Debugger terhubung sekarang!

Sajib Khan
sumber
Bagi Anda yang memiliki masalah dengan tombol CMD + M tidak berfungsi, saya menggunakan './adb shell keyevent 82' di shell tempat adb berada untuk memicunya. Tombol pintas mulai berfungsi setelah itu!
Jeff L
ANDA tuan adalah legenda berdarah. x
NewbieAid
Sekarang ini hanya mencoba untuk terhubung ke debugger jarak jauh ... untuk selamanya
Fakebounce
44

Saya menyelesaikannya dengan melakukan adb reverse tcp:8081 tcp:8081dan kemudian reloaddi telepon saya.

splunk
sumber
36

Dalam kasus saya, memilih Debug JS Remotely meluncurkan Chrome, tetapi tidak terhubung dengan perangkat android. Biasanya, tab / jendela Chrome baru akan memiliki URL debugging pra-diisi di bilah alamat, tetapi dalam hal ini bilah alamat kosong. Setelah periode waktu habis, pesan kesalahan "Tidak dapat terhubung dengan debugger jarak jauh" ditampilkan. Saya memperbaikinya dengan prosedur berikut:

  • Lari adb reverse tcp:8081 tcp:8081
  • Rekatkan http://localhost:8081/debugger-uike bidang alamat browser Chrome saya. Anda akan melihat layar debugging normal tetapi aplikasi Anda masih tidak akan terhubung.

Itu harus memperbaiki masalah. Jika tidak, Anda mungkin perlu mengambil langkah-langkah tambahan berikut:

  • Tutup dan copot pemasangan aplikasi dari perangkat Android Anda
  • Instal ulang aplikasi dengan react-native run-android
  • Aktifkan debugging jarak jauh pada aplikasi Anda.
  • Aplikasi Anda sekarang harus terhubung ke debugger.
Tom Aranda
sumber
2
Tom ... terima kasih! Sebelum ini saya mengatur alamat ip saya ("Pengaturan Dev" -> "Host server debug untuk perangkat") xxxx: 8081
atreeon
11

Saya memiliki masalah serupa yang mengarahkan saya ke pertanyaan ini. Di debugger browser saya, saya menerima pesan kesalahan ini:

Akses untuk mengambil di ' http: // localhost: 8081 / index.delta? Platform = android & dev = true & minify = false ' from origin ' http://127.0.0.1:8081 ' telah diblokir oleh kebijakan CORS: Tidak ada 'Akses-Kontrol Header-Allow-Origin hadir pada sumber yang diminta. Jika respons buram memenuhi kebutuhan Anda, atur mode permintaan ke 'no-cors' untuk mengambil sumber daya dengan CORS dinonaktifkan.

Butuh beberapa saat untuk menyadari bahwa saya menggunakan 127.0.0.1:8081bukanlocalhost:8081 untuk debugger saya.

Untuk memperbaikinya, saya cukup mengubah Chrome dari:

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

untuk

http://localhost:8081/debugger-ui/
jchavannes
sumber
1
sebenarnya bagi saya justru sebaliknya. Namun pada kenyataannya "localhost" biasanya setara dengan 127.0.0.1. Itu tergantung pada apa yang ditetapkan untuk alamat sebagai localhost. Selalu lebih baik untuk menjadi eksplisit
Carmine Tambascia
2

Pastikan bahwa server simpul untuk menyediakan bundel berjalan di latar belakang. Untuk menjalankan mulai gunakan server npm startatau react-native startdan biarkan tab terbuka selama pengembangan

Chethan N
sumber
1
Masih tidak berfungsi. Tidak ada terminal yang mengembalikan saya kesalahan
gagal
1
Apakah Anda menjalankan server proxy atau perangkat lunak proxy seperti charles ... Hentikan jika ada
Chethan N
Tidak, saya tidak menjalankan proxy apa pun
splunk
2

Kasus saya adalah bahwa ketika saya mengetuk mengaktifkan JS debugging jarak jauh, itu akan meluncurkan chrome, tetapi tidak dapat terhubung.

Saya sudah mencoba menjalankan:

adb reverse tcp:8081 tcp:8081 

, berhasil tetapi tidak berhasil.

Saya mencopot krom saya sepenuhnya dan menginstal yang baru. Dan itu berhasil.

Steven Fang
sumber
1
  1. mulai-asli mulai --reset-cache di satu tab dan bereaksi asli-lari-android di lain
  2. adb reverse tcp: 8081 tcp: 8081 (jadi Anda bisa menambahkannya ke skrip Anda dan jalankan saja menjalankan benang jalankan adb-reverse )
  3. Jika Anda menggunakan Android, Alih-alih menggoyangkan ponsel Anda, tip yang bagus adalah menjalankan perintah adb.

Jadi Anda dapat menjalankan:

  • adb shell input keyevent 82 ( opsi menu )
  • adb shell key keyventvent 46 46 ( reload )
Ribamar Santos
sumber
1

Jawaban lain di sini hilang satu langkah penting bagi saya. Di AndroidManifest.xml saya perlu menambahkan usesCleartextTraffic:

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

Anda mungkin tidak ingin menyimpan ini dalam rilis produksi aplikasi Anda, kecuali jika Anda ingin mendukung permintaan http tidak aman.

Setelah saya menambahkan ini ke AndroidManifest.xml saya, kemudian saya mengikuti jawaban Tom Aranda, dan emulator akhirnya dapat terhubung ke debugger.

Mitch Downey
sumber
0

Saya melakukan jawaban @ wajib dan menggunakan skrip ini untuk mengarahkan ulang port:

#!/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 🚧"
Thomazella
sumber
0

uninstall aplikasi Anda, kemudian jalankan react-native run-android. kemudian klik debugging end di chrome ganti http: // localhost: 8081 / debugger-ui / , end run react-native run-android. jika Anda masih belum berhasil coba lagi

muhyidin
sumber
0

Termasuk semua jawaban yang mengesankan khusus pengembang ahli Ribamar Santos , jika Anda tidak membuatnya berfungsi, Anda harus memeriksa sesuatu yang lebih rumit!

Sesuatu seperti Airplane modetelepon Anda (yang ditiru)! Atau network status of Emulator( Data status and Voice status on Cellular tab of Emulator configuration) Anda yang mungkin dimanipulasi untuk tidak mengekspresikan jaringan! untuk beberapa kebutuhan persaingan!

Saya telah mengatasi masalah ini dengan trik ini! Itu debug yang agak menakjubkan untuk menemukan lubang ini!

AbdolHosein
sumber
0

dalam kasus saya itu juga perlu menginstal paket npm itu

begitu

npm install react-native-debugger -g
Ehsan sarshar
sumber