web-dev-qa-db-fra.com

Suppression du fichier console.log de l'application React Native

Devez-vous supprimer les appels console.log() avant de déployer une application React Native dans les magasins? Existe-t-il des problèmes de performances ou d'autres problèmes si les appels console.log() sont conservés dans le code?

Existe-t-il un moyen de supprimer les journaux avec un gestionnaire de tâches (de la même manière que les gestionnaires de tâches Web tels que Grunt ou Gulp)? Nous en voulons toujours pendant notre phase de développement/débogage/test, mais pas en production.

Merci!

16
RRikesh

croire que la meilleure pratique consiste à envelopper votre code de débogage dans des déclarations telles que ...

if(__DEV__){
    console.log();
}

De cette façon, il ne s'exécute que lorsque vous êtes exécuté dans le conditionneur ou l'émulateur. Plus d'infos ici ... https://github.com/facebook/react-native/tree/master/packager#pathtomodulenamemapbundle-query-params

8
Chris Geirman

Eh bien, vous pouvez toujours faire quelque chose comme:

if (!__DEV__) {
  console.log = () => {};
}

Donc, chaque console.log serait invalidé dès que __DEV__ n'est pas vrai.

39
Lucas Bento

Babel transpiler peut supprimer les instructions console avec le plugin suivant:

npm i babel-plugin-transform-remove-console --save-dev

Éditez .babelrc:

{
  "env": {
    "production": {
      "plugins": ["transform-remove-console"]
    }
  }
}

Et les instructions console sont supprimées de votre code.

source: https://hashnode.com/post/remove-consolelog-statements-in-production-in-react-react-react-native-apps-cj2rx8yj7003s2253er5a9ovw

21
adam

J'ai trouvé ce qui suit comme étant une bonne option car il n'est pas nécessaire de se connecter même si __DEV__ === true, si vous n'êtes pas également en train de déboguer à distance. 

En fait, j'ai constaté que certaines versions de RN/JavaScriptCore/etc s'arrêtaient presque lors de la journalisation (même les chaînes de caractères), ce qui n'est pas le cas du moteur V8 de Chrome.

// only true if remote debugging
const isDebuggingEnabled = (typeof atob !== 'undefined');

if (!isDebuggingEnabled) {
    console.log = () => {};
}

Vérifiez si le débogage JS distant est activé

0
James Trickey

L'utilisation de Sentry pour le suivi des exceptions désactive automatiquement console.log en production, mais l'utilise également pour le suivi des journaux depuis le périphérique. Ainsi, vous pouvez voir les derniers journaux dans les détails des exceptions sentry (chapelure).

0