wake-up-neo.com

Console.log aus der React Native-App entfernen

Sollten Sie die console.log()-Aufrufe entfernen, bevor Sie eine React Native-App in den Stores bereitstellen? Gibt es Performance- oder andere Probleme, wenn die console.log()-Aufrufe im Code enthalten sind?

Gibt es eine Möglichkeit, die Protokolle mit einem Task-Runner zu entfernen (auf ähnliche Weise wie Task-Runner wie Grunt oder Gulp)? Wir wollen sie immer noch in unserer Entwicklungs-/Debugging-/Testphase, aber nicht in der Produktion.

Vielen Dank!

16
RRikesh

wir glauben, dass die beste Vorgehensweise darin besteht, Ihren Debug-Code in Anweisungen wie ...

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

Auf diese Weise wird es nur ausgeführt, wenn Sie im Packager oder Emulator ausgeführt werden. Mehr Infos hier ... https://github.com/facebook/react-native/tree/master/packager#pathtomodulenamemapbundle-query-params

8
Chris Geirman

Nun, Sie können immer etwas tun:

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

Jeder console.log wäre also ungültig, sobald __DEV__ nicht wahr ist.

39
Lucas Bento

Babel-Transpiler kann console-Anweisungen mit dem folgenden Plugin entfernen:

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

.Babelrc bearbeiten:

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

Und console-Anweisungen werden aus Ihrem Code entfernt.

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

21
adam

Ich habe die folgenden Optionen für eine gute Option gefunden, da keine Protokollierung erforderlich ist, auch wenn __DEV__ === true ist, wenn Sie nicht auch remote debuggen. 

In der Tat habe ich festgestellt, dass bestimmte Versionen von RN/JavaScriptCore/etc beim Logging (sogar nur Zeichenfolgen) fast zum Erliegen kommen, was bei Chrome V8 nicht der Fall ist.

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

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

Prüfen Sie, ob im Remote-JS-Debugging aktiviert ist

0
James Trickey

Durch die Verwendung von Sentry für die Verfolgung von Ausnahmen wird console.log in der Produktion automatisch deaktiviert, aber auch für die Verfolgung von Protokollen vom Gerät verwendet. So können Sie die neuesten Protokolle in Sentry-Ausnahmedetails (Breadcrumbs) anzeigen.

0