Pozbądź się ostrzeżenia „Zdalny debugger jest na karcie w tle” w React Native

88

Rozpocząłem nowy projekt w React Native i wciąż otrzymuję następujące ostrzeżenie:

Zdalny debugger znajduje się na karcie w tle, co może powodować spowolnienie działania aplikacji. Napraw to, ustawiając kartę na pierwszym planie (lub otwierając ją w osobnym oknie).

To trochę denerwujące, więc chcę wiedzieć, jak się go pozbyć? Uruchamiam debugera w Chrome i przeniosłem go do osobnego okna, ale to nie pomogło.

mxmtsk
źródło
Dla innych czytających to myślę, że to, czego potrzebujesz, to szybszy debugger zamiast ignorowania tych ostrzeżeń. Poniżej odpowiedź @varunvs dotycząca korzystania z odczytywanego debugera natywnego usuwa ostrzeżenie i skraca czas wyjścia urządzenia
Vineeth Pradhan
3
Prawidłowa odpowiedź ( poniżej ) to teraz po prostu zaznaczenie pola wyboru „Utrzymaj priorytet” na stronie debugera.
orome
od czasu użycia responsywnej wersji 0.63.0 LogBox.ignoreLogs(['Remote debugger']);odreact-native
Anton Novik

Odpowiedzi:

149

Jeśli masz pole wyboru Zachowaj priorytet w oknie debugera, spróbuj je włączyć, zanim przejdziesz do któregokolwiek z poniższych rozwiązań.

Aby pozbyć się ostrzeżenia w całym projekcie, dodaj następujące elementy do swojego najbardziej zewnętrznego pliku JavaScript (w większości przypadków dotyczy to index.jsReact Native)

dla reaktywnych v0.63+:

Użyj LogBox: https://reactnative.dev/docs/debugging#logbox

LogBox.ignoreLogs(['Remote debugger']);

dla reaktywnych v0.57 - v0.62:

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Remote debugger']);

Odnieś się do tego z oficjalnej dokumentacji React Native:

https://facebook.github.io/react-native/docs/debugging.html

reagować natywnie v0.56 lub poniżej:

Dodaj następujące elementy na początku swojego kodu:

console.ignoredYellowBox = ['Remote debugger'];

Łatwe, proste i specyficzne dla tego błędu. Pracuje dla mnie. Może zastąpić dowolny tekst.

kjonsson
źródło
Dodałem to tuż przed moją instrukcją AppRegistry.registerComponent i zadziałało! Dzięki
İlter Kağan Öcal
1
Umieściłem ten kod na moim najwyższym poziomie index.js. Działa jak marzenie. if (__DEV__) { console.ignoredYellowBox = ['Remote debugger']; }
Mike S.
@MikeS. Dostałem ostrzeżenie [eslint] '__DEV__' is not defined. (no-undef). Czy też to rozumiesz?
anticafe
@anticafe Nie, nie otrzymuję żadnych ostrzeżeń. Więc nie jestem pewien, jaki byłby problem.
Mike S.
Hej, używam, YellowBox.ignoreWarnings(['Remote debugger', 'Require cycles']);ale oba ostrzeżenia nadal pojawiają się w oknie mojej konsoli. Używam wersji RN 0.61.4. Proszę o pomoc
Archana Sharma
39

to rozwiązanie działa dla mnie

otwórz / przenieś http: // localhost: 8081 / debugger-ui (domyślna ścieżka do zdalnego debugowania) w osobnym oknie

może to mogłoby pomóc :)

anztrax
źródło
5
po prostu przenieś kartę z normalnej grupy 37 kart do jej własnego okna. dzięki
jakeforaker
Tak, to działa. Ale każdy może mi powiedzieć, dlaczego tak jest?
Ranjan
24

Możesz użyć React Native Debugger dostępnego pod adresem https://github.com/jhen0409/react-native-debugger.Jest to samodzielna aplikacja do debugowania aplikacji React Native podczas programowania.

varunvs
źródło
3
Dzięki, na pewno spróbuję, ale nie jest to dokładnie to, czego szukam jako odpowiedź, ponieważ nie rozwiązuje to ostrzeżenia. Nie dostaję ostrzeżenia o innych aplikacjach RN na tym samym komputerze dziwnie
MXMTSK
1
Miałem podobny problem, ale użycie debuggera React Native go rozwiązało.
varunvs
Dzięki, zdecydowałem się na to rozwiązanie, ponieważ trzymanie debuggera w jego własnych oknach nie kasuje ostrzeżenia dla mnie cały czas
mxmtsk
2
Zainstalowanie innego narzędzia tylko w celu usunięcia ostrzeżenia nie jest najlepszym rozwiązaniem, a to inne narzędzie ma swoje własne problemy. Prawidłowa odpowiedź to ta kjonssona poniżej -console.ignoredYellowBox = ['Remote debugger'];
laurent
1
@ this.lau_ Czy to nie tylko ukrywa ostrzeżenie i nie rozwiązuje rzeczywistego problemu? Uważam, że problem, który próbujemy rozwiązać, polega na naprawieniu niskiej wydajności aplikacji podczas debugowania. Przymusowe ukrycie ostrzeżenia tego nie naprawi.
varunvs
8
  1. Przejdź http://localhost:*****/debugger-uido osobnego okna.
  2. Uruchom ponownie Remote JS Debugging.
Ramzan Chasygov
źródło
6

Dzieje się tak ze względu na liczbę zakładek otwieranych w przeglądarce z zakładką React Native Remote Debugger UI . Ja też stanąłem przed tym samym problemem.

Aby obejść ten komunikat ostrzegawczy, możesz użyć jednej z następujących metod:

kadłub
źródło
6

Jak wspomniał @jakeforaker w jednym z komentarzy. Ostrzeżenie zniknęło, po prostu otwierając zdalny debuger w osobnym oknie zamiast karty w istniejącym oknie przeglądarki (musisz jednak ponownie załadować symulator).

Jak mówi ostrzeżenie, trzymanie zdalnego debugera w tym samym oknie co inne karty

może powodować spowolnienie działania aplikacji

Więc myślę, że po prostu tłumienie ostrzeżenia, o którym wspomniał @kjonsson: - console.ignoredYellowBox = ['Remote debugger'];nie wydaje się być najlepszym rozwiązaniem.

Ashish Pisey
źródło
5

Ten problem został rozwiązany, gdy zamknąłem wszystkie otwarte okna Chrome i ponownie uruchomiłem usuwanie debugowania. Wcześniej miałem otwarte okna Chrome, więc „wydaje się”, że ich otwarcie zabija wydajność.

dnp
źródło
5

Od tego zobowiązania w marcu 2017 r. Możesz zaznaczyć pole wyboru Zachowaj priorytet . Po włączeniu dyskretnie odtwarza .wavplik zakodowany w standardzie base64 , aby zapobiec wejściu karty przeglądarki debugera w tryb niskiego poboru mocy, co może wpłynąć na wydajność gniazda internetowego. Zapobiegnie to skutecznie opisywanemu ostrzeżeniu.

aleclarson
źródło
4

Myślę, że zaakceptowana odpowiedź nie jest już dokładna (przynajmniej dla React Native v0.57 +).

Prawidłowy kod to teraz:

import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Remote debugger']);

Odnieś się do tego z oficjalnej dokumentacji React Native:

https://facebook.github.io/react-native/docs/debugging.html

Stud Sterkel
źródło
2

Jestem na Macbooku. Naprawiłem ten problem, umieszczając okno Debuggera na głównym pulpicie, zamiast umieszczać je na oddzielnym pulpicie, który według niego znajduje się w „tle”.

wprowadź opis obrazu tutaj

Parth Chokshi
źródło
0

Wczoraj pojawił się ten sam problem. Googlowanie doprowadziło do tego postu Stack Overflow . W jednej z odpowiedzi (autorstwa adriansprod) zasugerował:

Chrome debugger in it's own window fixes. But annoying problem

Prawdopodobnie Twój debugger React Native nie znajduje się w swoim własnym oknie przeglądarki Chrome, ale na karcie przeglądarki Chrome. Wyciągnięcie go jako własnego okna, jak sugeruje adriansprod, naprawiło to dla mnie.

alee8
źródło
0

Obsługiwany jest (bardzo denerwujący) komunikat o błędzie debuggerWorker.js, który niestety nie zawiera żadnych opcji konfiguracyjnych, aby wyłączyć komunikat. Na razie nie ma więc możliwości skonfigurowania aplikacji w celu wyłączenia wiadomości.

Powiązany kod przedstawiono poniżej (obowiązuje oryginalna licencja ):

var visibilityState;
var showVisibilityWarning = (function() {
  var hasWarned = false;
  return function() {
    // Wait until `YellowBox` gets initialized before displaying the warning.
    if (hasWarned || console.warn.toString().includes('[native code]')) {
      return;
    }
    hasWarned = true;
    console.warn(
      'Remote debugger is in a background tab which may cause apps to ' +
      'perform slowly. Fix this by foregrounding the tab (or opening it in ' +
      'a separate window).'
    );
  };
})();

Jak widać, żadne opcje konfiguracyjne nie są używane, całość jest lokalnie ograniczona (zobacz powyższy link repo po dalsze szczegóły).

Eteryta
źródło
0

Z tym samym problemem spotkałem się około tydzień temu iw końcu znalazłem rozwiązanie, które działa doskonale dla mnie

Nazywa się reaktotronem, możesz go znaleźć tutaj - https://github.com/reactotron/reactotron i możesz go użyć do:
* przeglądania stanu aplikacji
* wyświetlania żądań i odpowiedzi API
* wykonywania szybkich testów wydajności
* subskrybowania części stan aplikacji
* wyświetlaj komunikaty podobne do console.log
* śledź globalne błędy za pomocą śladów stosu mapowanych na źródła, w tym śladów stosu sagi!
* wysyłaj akcje, takie jak rządowy eksperyment kontroli umysłu
* zmieniaj stan aplikacji na gorąco
* śledź sagi

Mam nadzieję, że mój post był pomocny i nigdy nie spotkasz się z tym żmudnym ostrzeżeniem.

Powodzenia

Probojnik
źródło
0

Używam tego w index.js

if (__DEV__) {
  console.ignoredYellowBox = [
    'Remote debugger',
    'Warning: isMounted… is deprecated',
    'Module RCTImageLoader'
  ];
}
Mike S.
źródło
Sprowadziłem teżimport { AppRegistry, YellowBox } from 'react-native';
Mike S.
Chociaż właśnie ponownie przetestowałem to w nowej aplikacji i wydaje się, że nie działa. Ciekawe, czy coś się zmieniło 0.57.4?
Mike S.
0

mogą istnieć szanse, że inny debugger jest już połączony z programem pakującym. więc zamknij terminal i debuger Google Chrome.

jeśli używasz menedżera pakietów programu Visual Studio, nie uruchamiaj menedżera pakietów za pomocą polecenia terminala Mac / innego systemu operacyjnego.

więc zamknij cały terminal i przestań przechodzić do menedżera pakietów i debuggera Google Chrome. rozpocząć proces ponownie.

Deepak Singh
źródło