Elimina l'avviso "Il debugger remoto è in una scheda in background" in React Native


87

Ho avviato un nuovo progetto React Native e continuo a ricevere il seguente avviso:

Il debugger remoto si trova in una scheda in background che potrebbe rallentare le prestazioni delle app. Risolvi il problema mettendo in primo piano la scheda (o aprendola in una finestra separata).

È un po 'fastidioso, quindi voglio sapere come posso sbarazzarmene? Sto eseguendo il debugger in Chrome e l'ho spostato in una finestra separata ma non ha aiutato.


Per gli altri che leggono questo, penso che ciò di cui hai bisogno sia un debugger più veloce invece di ignorare questi avvisi. La risposta di seguito di @varunvs per utilizzare il debugger-nativo di reazione rimuove l'avviso e riduce il tempo di output del dispositivo
Vineeth Pradhan

3
La risposta corretta ( sotto ) ora è semplicemente selezionare la casella di controllo "Mantieni priorità" nella pagina del debugger.
orome

da quando reattivo v0.63.0 utilizzare LogBox.ignoreLogs(['Remote debugger']);dareact-native
Anton Novik

Risposte:


148

Per eliminare l'avviso nell'intero progetto, aggiungi quanto segue al tuo file Javascript più esterno (il più delle volte è index.jsper React Native)

per React-Native v0.57+:

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

Fai riferimento a questo dai documenti ufficiali di React Native:

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

nativo di reazione v0.56 o inferiore:

Aggiungi quanto segue all'inizio del codice:

console.ignoredYellowBox = ['Remote debugger'];

Facile, semplice e specifico per quell'errore. Per me va bene. Può sostituire qualsiasi testo tu voglia.


Aggiunto questo appena prima della mia dichiarazione AppRegistry.registerComponent e ha funzionato! Grazie
İlter Kağan Öcal

1
Ho inserito questo codice nel mio livello superiore index.js. Funziona come un fascino. if (__DEV__) { console.ignoredYellowBox = ['Remote debugger']; }
Mike S.

@MikeS. Ho ricevuto un avvertimento [eslint] '__DEV__' is not defined. (no-undef). Capisci anche tu?
anticafe

@anticafe No, non ricevo avvisi. Quindi non sono sicuro di quale sarebbe il problema.
Mike S.

Ehi, sto usando YellowBox.ignoreWarnings(['Remote debugger', 'Require cycles']);ma entrambi gli avvisi continuano a essere visualizzati nella finestra della mia console. Sto usando la versione 0.61.4 di RN. Per favore
aiutatemi

39

questa soluzione è un lavoro per me

apri / sposta http: // localhost: 8081 / debugger-ui (percorso predefinito per il debug remoto) nella finestra separata

forse questo potrebbe aiutare :)


5
sposta semplicemente la scheda fuori dal tuo normale gruppo di 37 schede nella sua finestra. grazie
jakeforaker

Sì, funziona. Ma chiunque può dirmi perché è così?
Ranjan

24

Puoi usare React Native Debugger disponibile su https://github.com/jhen0409/react-native-debugger È un'app standalone per il debug delle app React Native durante lo sviluppo.


3
Grazie, lo proverò sicuramente ma non è esattamente quello che cerco come risposta perché non risolve l'avviso. Non ricevo stranamente l'avviso su altre app RN sullo stesso computer
mxmtsk

1
Ho avuto il problema simile, ma l'utilizzo del debugger React Native lo ha risolto.
varunvs

Grazie, ho scelto questa soluzione perché mantenere il debugger nelle sue finestre non cancella sempre l'avviso per me
mxmtsk

2
Installare un altro strumento solo per rimuovere un avviso non è la soluzione migliore e quell'altro strumento ha i suoi problemi. La risposta corretta è quella di Kjonsson sotto -console.ignoredYellowBox = ['Remote debugger'];
laurent

1
@ this.lau_ Non si limita a nascondere l'avviso e non a risolvere il problema reale? Credo che il problema che stiamo cercando di risolvere sia correggere le prestazioni lente dell'app durante il debug. Nascondere forzatamente un avviso non lo risolverà.
varunvs

8
  1. Spostati http://localhost:*****/debugger-uisulla finestra separata.
  2. Riavvia Remote JS Debugging.

6

È a causa del numero di schede aperte nel browser con la scheda React Native Remote Debugger UI . Ho anche affrontato lo stesso problema.

Per superare questo messaggio di avviso è possibile utilizzare uno qualsiasi dei metodi seguenti:


6

Come accennato da @jakeforaker in uno dei commenti. L'avviso è scomparso semplicemente aprendo il debugger remoto in una finestra separata invece che in una scheda nella finestra esistente del browser (devi ricaricare il simulatore però).

Come dice l'avviso, mantenere il debugger remoto nella stessa finestra delle altre schede

potrebbe rallentare l'esecuzione delle app

Quindi penso che semplicemente sopprimere l'avviso come menzionato da @kjonsson: - non console.ignoredYellowBox = ['Remote debugger'];sembra essere la soluzione migliore.


5

Questo problema è stato risolto quando ho chiuso tutte le finestre di Chrome aperte e ho riavviato la rimozione del debug. In precedenza avevo finestre di Chrome aperte, quindi "sembra" che averle aperte uccida le prestazioni.


5

Dal momento che questo commit nel marzo 2017, è possibile abilitare la casella di controllo Mantieni priorità . Quando è abilitato, riproduce silenziosamente un .wavfile con codifica base64 per impedire alla scheda del browser del debugger di entrare in modalità a basso consumo, che può influire sulle prestazioni del websocket. Ciò impedirà efficacemente l'avviso che descrivi.



2

Sono su Macbook. Ho risolto questo problema portando la finestra Debugger sul desktop principale, invece di averla su un desktop separato che pensa sia in "Sfondo".

inserisci qui la descrizione dell'immagine


0

Ho avuto lo stesso problema ieri. Google ha portato a questo post di Stack Overflow . In una delle risposte (di adriansprod), ha suggerito:

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

È probabile che il tuo debugger React Native non si trovi nella sua finestra del browser Chrome ma in una scheda del browser Chrome. Tirarlo fuori come una finestra, come suggerisce adriansprod, ha risolto il problema per me.


0

Il messaggio di errore (molto fastidioso) viene gestito da debuggerWorker.js, che purtroppo non include alcuna opzione di configurazione per disattivare il messaggio. Quindi per il momento non ci sono modi per configurare l'applicazione per disabilitare il messaggio.

Il codice correlato è descritto di seguito (si applica la licenza originale ):

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).'
    );
  };
})();

Come puoi vedere, non vengono utilizzate opzioni di configurazione, il tutto è limitato localmente (vedi il link repo sopra per ulteriori dettagli).


0

Ho anche affrontato lo stesso problema circa una settimana fa e finalmente ho trovato una soluzione che funziona in modo eccellente per me

Si chiama reactotron, puoi trovarlo qui - https://github.com/reactotron/reactotron e puoi usarlo per:
* visualizzare lo stato della tua applicazione
* mostrare richieste e risposte API
* eseguire benchmark rapidi delle prestazioni
* iscriverti a parti del tuo stato dell'applicazione
* visualizza messaggi simili a console.log
* traccia gli errori globali con tracce dello stack mappate alla sorgente, incluse le tracce dello stack di saga!
* invia azioni come un esperimento di controllo mentale gestito dal governo
* sostituisci a caldo lo stato della tua app
* segui le tue saghe

Spero che il mio post sia stato utile e non dovrai mai affrontare questo noioso avvertimento.

In bocca al lupo


0

Lo uso in index.js

if (__DEV__) {
  console.ignoredYellowBox = [
    'Remote debugger',
    'Warning: isMounted… is deprecated',
    'Module RCTImageLoader'
  ];
}

Ho anche importatoimport { AppRegistry, YellowBox } from 'react-native';
Mike S.

Anche se l'ho appena testato in una nuova app e non sembra funzionare. Chissà se qualcosa è cambiato 0.57.4?
Mike S.


0

ci potrebbero essere possibilità che un altro debugger sia già connesso a packager. quindi chiudi il tuo terminale e debugger google chrome.

se stai usando il gestore di pacchetti di Visual Studio, non avviare il gestore di pacchetti con il comando del terminale Mac / altro sistema operativo.

quindi chiudi tutto il terminale e smetti di andare in gestione pacchetti e debugger di Google Chrome. riavviare il processo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.