React-native: RCTBridge avait besoin de dispatch_sync pour charger RCTDevLoadingView. Cela peut entraîner des blocages

Créé le 15 oct. 2017  ·  106Commentaires  ·  Source: facebook/react-native

J'obtiens cet avertissement au hasard au démarrage de l'application iOS (pas toujours).

Est-ce un rapport de bogue?

Oui

Avez-vous lu les directives de contribution ?

Oui

Environnement

Système d'exploitation: macOS Sierra 10.12.6
Nœud: 6.10.2
Fil: 1.0.2
npm: 5.4.2
Gardien: 4.7.0
Xcode: Xcode 9.0 Build version 9A235
Studio Android: 2.1 AI-143.2915827

Paquets: (voulu => installé)
réagir: ^ 16.0.0 => 16.0.0
natif de réaction: ^ 0,49,3 => 0,49,3

Étapes à suivre pour reproduire

  1. Démarrez l'appli

    Comportement prévisible

Pas d'avertissement

Comportement réel

capture d ecran 2017-10-15 12 49 45

Démo reproductible

N / A

Certains packages que j'utilise

https://github.com/antoinerousseau/react-native-custom-components
https://github.com/rebeccahughes/react-native-device-info
https://github.com/evollu/react-native-fcm
https://github.com/gwmccull/react-native-polyfill
https://github.com/getsentry/react-native-sentry

Bug iOS

Commentaire le plus utile

Veuillez arrêter d'ajouter +1 s, cela génère des notifications par e-mail qui n'ajoutent aucune information. Utilisez plutôt la fonction «ajouter une réaction».

Tous les 106 commentaires

Pareil ici!

obtenu ce problème jaune pour iOS

Je vois cela aussi. Peut-être lié à # 11196.
Je pense que c'est ce qui provoque également le blocage de l'application lors de la tentative de rechargement; ça échoue avec
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This method must not be called before the JS thread is created'

Je reçois également cette erreur de temps en temps sur iOS 11 et je ne sais pas comment le déboguer pour donner plus d'informations. Stacktrace n'aide pas du tout dans ce cas.

+1

+1

Veuillez arrêter d'ajouter +1 s, cela génère des notifications par e-mail qui n'ajoutent aucune information. Utilisez plutôt la fonction «ajouter une réaction».

Même problème. Voici les packages que j'utilise:

  • react-native-device-info
  • réagir-natif-interactif
  • react-native-sensitive-info
  • react-native-snackbar
  • react-native-splash-screen
  • réagir-natif-svg
  • react-native-vector-icons

Compte tenu de l'intersection avec la liste de @antoinerousseau , les emplacements possibles pour ce bug sont:

  • Un bug dans React-Native lui-même
  • Un bogue dans react-native-device-info
  • Plusieurs bogues dans les bibliothèques autres que react-native-device-info

Je viens d'ajouter react-native-device-info, et je suis passé de rn 0.49 à 0.50. et maintenant j'ai trouvé ce bug. Je ne sais pas si c'est le problème, mais c'est quand j'ai ça.

Même problème...
Ce n'était donc pas ma faute?

Même problème ... Avez-vous des solutions?

Même problème. Le seul package de la liste ci-dessus que nous utilisons est react-native-sentry .

Même problème ici aujourd'hui, j'ai commencé une toute nouvelle application et le seul package que j'ai ajouté
"native-base": "^ 2.3.3",
"réagir": "16.0.0",
"react-native": "0,50,3",
"react-native-fcm": "^ 10.0.3"

@rizzomichaelg
+1
"react-native": "0.49.3",
l'application a planté lors du premier chargement aléatoire.

quelqu'un l'a résolu ??

@dantman J'ai commencé à voir le problème immédiatement après l'installation de react-native-device-info, donc je soupçonne fortement que le problème est lié, du moins dans notre cas, à ce package spécifique.

Le seul autre package que j'utilise react-native-keychain, que j'ai installé il y a pas mal de temps sans aucun problème, cela semble donc être un bon pari.

rebeccahughes / react-native-device-info # 260 semble avoir un message faisant référence à RNDeviceInfo alors que ce bogue fait référence à RCTDevLoadingView . Il peut donc y avoir plus d'un endroit déclenchant cet avertissement.

Si vous souhaitez mettre un point d'arrêt sur la ligne suivante:

RCTLogWarn(@"RCTBridge required dispatch_sync to load %@. This may lead to deadlocks", _moduleClass);

Vous pouvez voir quel module / pile est responsable du chargement de RCTDevLoadingView dans mon cas, c'était RCTCxxBridge.mm qui chargeait le bundle distant et rapportait la progression du téléchargement sur RCTDevLoadingView :

... onProgress:^(RCTLoadingProgress *progressData) {
#if RCT_DEV && __has_include("RCTDevLoadingView.h")
      RCTDevLoadingView *loadingView = [weakSelf moduleForClass:[RCTDevLoadingView class]];
      [loadingView updateProgress:progressData];
#endif
    }];

Ici, le RCTCxxBridge utilise moduleForClass qui chargera une instance du module s'il n'est pas encore disponible. En raison de la file d'attente utilisée pour le bloc onProgress , RCTDevLoadingView serait chargé sur une file d'attente non principale, tandis que RCTDevLoadingView nécessite une configuration de file d'attente principale.

J'ai pu contourner l'avertissement en chargeant de manière optimiste RCTDevLoadingView en renvoyant une instance de mon RCTBridgeDelegate utilisant:
- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge;

J'ai pu contourner l'avertissement en mettant AppDelegate.m jour

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

natif de réaction: 0,50,4
même problème...

natif de réaction: 0,51,0
même problème...

"réagir": "16.2.0",
"react-native": "0.52.0",
même problème...

"réagir": "16.2.0",
"react-native": "0.51.0",
"react-native-device-info": "0.13.0"

Ma solution ici était de déplacer les informations de l'appareil natif de réaction hors du fichier pod et de le lier manuellement dans le projet. Cela semblait résoudre le problème. Je pense qu'une autre approche pourrait être d'inclure CxxBridge en tant que sous-spécification de React dans le fichier pod, mais cela nécessite Folly (et donc boost), et toute cette configuration est lourde / prend beaucoup de temps. Si vous souhaitez une solution rapide, supprimez simplement les packages à l'origine du problème du pod.

Aucune information "react-native-device-info" installée:
Le problème existe dans la version 0.54.2:

"react": "16.3.0-alpha.2",
"natif de réaction": "0,54,2",
"react-native-action-button": "^ 2.8.4",
"react-native-admob": "^ 2.0.0-beta.4",
"react-native-animatable": "^ 1.2.4",
"react-native-awesome-alerts": "^ 1.0.7",
"react-native-elements": "^ 0.19.0",
"react-native-fbsdk": "^ 0.7.0",
"react-native-linear-gradient": "^ 2.4.0",
"react-native-parallax-scroll-view": "^ 0.21.0",
"react-native-photo-grid": "0.0.2",
"react-native-responsive-dimensions": "^ 1.0.2",
"react-native-snap-carousel": "^ 3.6.0",
"react-native-vector-icons": "^ 4.5.0",
"react-navigation": "^ 1.5.7"

C'était avec le "react-native-action-button": "^ 2.8.4", l'ajout de shadowStyle={{shadowOpacity: 0.9}} résolu l'avertissement.

Même problème ici.

Même problème.
RN 0,54,4

Quelqu'un a la solution?

L'erreur vient même pour un projet fraîchement / nouvellement créé.

"réagir": "16.3.1",
"natif de réaction": "0,54,4"

même

+1

@antoinerousseau une mise à jour sur ce problème?

Je ne recommanderais pas la solution fournie par @devburmistro. Pour mon projet, son inclusion a créé une sorte de condition de concurrence où cette erreur d'assertion se manifeste de manière aléatoire au démarrage lors de son exécution à partir du simulateur.

Ma configuration:

react-native-cli: 2.0.1
react-native: 0.53.0

J'ai commencé à avoir ce problème juste maintenant après avoir configuré mon dépôt à partir de zéro et y avoir inséré le code pur js. Une différence potentielle entre le précédent et ce nouveau dépôt est que j'utilise maintenant des Cocoapods.

Quelqu'un n'utilise pas de Cocoapods?

Cela s'est produit juste après avoir ajouté

réagir-natif-flou

à une vue d'extension de partage, imbriquée dans

react-native-modalbox

@Babazon utilisez-vous un débogueur lorsque cela se produit?

Désolé. Je n'ai pas pu déboguer / journal de la console à partir de la vue Extension de partage, uniquement l'application principale.

+1

Merci d'avoir publié ceci! Il semble que votre problème se réfère à une version plus ancienne de React Native. Pouvez-vous reproduire le problème dans la dernière version, v0.55 ?

Merci pour vos contributions.

@ Le problème de react-native-bot se produit toujours sur React Native 0.55

@ react-native-bot Lorsque vous utilisez des cocoapodes pour gérer React native, le problème apparaîtra.

versions que j'essaye 0.50.4 et 0.55.4

Je viens d'installer react-native-svg sur React Native 0.55.3 et ce problème est apparu.

screen shot 2018-05-30 at 16 04 07

problème qui se produit toujours sur:

react-native-cli: 2.0.1
natif de réaction: 0,55,4

J'ai exactement le même avertissement avec un nouveau projet créé sans aucun code ajouté, mais uniquement des dépendances Firebase injectées.
J'utilise: react: 16.3.1
natif de réaction: 0,55,4
Je vous remercie

J'ai le même problème mais, pour moi, c'était à cause de la fenêtre de terminal précédente en cours d'exécution lorsque je réexécute la construction à partir de Xcode. Je viens de quitter le terminal et le simulateur et relancer la construction, ce problème a été résolu.

J'ai également installé react-native-device-info, mais le message jaune est légèrement différent pour moi: `` RCTBridge a requis dispatch_sync pour charger RCCManagerModule ... ''

J'allais dire que je reçois cet avertissement lorsque je map sur un tableau pour retourner de nouveaux éléments ou passer un accessoire style à des composants personnalisés, mais maintenant, l'avertissement semble imprévisible.

J'ai également rencontré ce problème sur OS11.

  • réagir-navigation
  • react-native-vector-icons

Je vois quelques personnes ici qui ont mentionné l'utilisation d'icônes vectorielles.

J'ai également eu le même problème pour moi, j'ai dissocié et supprimez les informations sur le périphérique react-native et maintenant cet avertissement n'apparaît pas.

J'ai eu le même problème après avoir ajouté des icônes vectorielles react-native, je l'ai supprimé et l'avertissement a disparu.

FYI, cet avertissement est apparu aujourd'hui après le rechargement avec le débogueur distant activé. Éteindre la télécommande, recharger, pas d'avertissement. Rallumé la télécommande, rechargé, aucun avertissement.

FYI, cet avertissement est apparu aujourd'hui après le rechargement avec le débogueur distant activé. Éteindre la télécommande, recharger, pas d'avertissement. Rallumé la télécommande, rechargé, aucun avertissement.

~ Après avoir lu le commentaire @mokriya, j'ai rechargé le débogueur et il a cessé d'afficher l'avertissement. Il est possible que le déplacement entre l'émulateur / simulateur Android et IOS avec l'onglet débogueur ouvert dans le navigateur soit à l'origine de ce problème. ~

Non pas ça

iOS 12, RN 0.57.0 même problème.

comment résoudre?
ou ignorer est?

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

Oui, je rencontre également ce problème après l'ajout de react-native-video, mais qu'est-ce que cela signifie? Cela ne semble pas empêcher la lecture des vidéos. Aussi pourquoi tous ces composants tiers provoquent-ils l'erreur? Faut-il quelque chose dans le développement de nos modules natifs?

Obtenir le même problème sur iOS 12.1, RN 0.57.4 sans react-native-device-info

J'ai un problème

"lodash": "^4.17.10",
"react": "16.4.1",
"react-native": "0.56.0",
"react-native-check-box": "^2.1.0",
"react-native-collapsible": "^1.2.1",
"react-native-elements": "^0.19.1",
"react-native-google-analytics-bridge": "^5.8.0",
"react-native-google-places-autocomplete": "^1.3.9",
"react-native-map-clustering": "^1.3.0",
"react-native-maps": "^0.21.0",
"react-native-masked-text": "^1.7.2",
"react-native-modal-picker": "0.0.16",
"react-native-onesignal": "^3.2.8",
"react-native-simple-radio-button": "^2.7.2",
"react-native-svg": "^8.0.0",
"react-native-ui-kitten": "^3.0.1",
"react-native-vector-icons": "^5.0.0",
"react-navigation": "^2.11.2",
"rn-sliding-up-panel": "^1.2.1",
"victory-native": "^30.5.0"

Dans IOS, obtenir «RCTBridge a requis dispatch_snyc pour charger RCTDevLoadingView Cela peut entraîner des blocages».

Peut-être que vous devriez Project -> Clean dans votre Xcode, puis relancez votre application.

J'ai confirmé que ce commentaire est la solution. Merci @mattijsf!

Trouvez votre RCTBridgeDelegate et remplacez la méthode extraModulesForBridge .

Objectif c

<strong i="11">@interface</strong> MyBridgeDelegate : NSObject <RCTBridgeDelegate>
<strong i="12">@end</strong>

<strong i="13">@implementation</strong> MyBridgeDelegate

- (NSArray<id<RCTBridgeModule>> *)extraModulesForBridge:(RCTBridge *)bridge
{
  return @[
#if RCT_DEV
    [bridge moduleForClass:[RCTDevLoadingView class]],
#endif
  ];
}

<strong i="14">@end</strong>

Swift 4

class MyBridgeDelegate: NSObject, RCTBridgeDelegate {
  func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! {
    var modules: [Any]! = []
    if RCT_DEV == 1 {
      modules.append(bridge.module(for: RCTDevLoadingView.self))
    }
    return modules as? [RCTBridgeModule]
  }
}

Repro sur iOS12, RN 0.57.8

image
ma dépendance, le même problème

@aleclarson que fait exactement ce code?

@ccorcos Il charge le RCTDevLoadingView plus tôt, donc il n'a pas à bloquer le thread principal lorsqu'il est chargé par RN. Ce commentaire pourrait être une solution plus simple pour vous.

Je ne sais pas si cela se produit encore pour d'autres, mais cela se produit toujours pour moi avec RN 0.57.8 + iOS 11.3 (au moins)

J'utilise avec succès la modification du commentaire ci-dessus de @devburmistro

Face à ce problème

RN 0,58,3
iOS 11.4, 12.1

et cela mène à une impasse. Cela m'arrive lorsque je ferme le modal personnalisé

Je n'ai pas eu cela sur le 0.57.8 précédent, ce qui était très bien

Idem ici, obtenir ceci après la mise à niveau vers RN 0.58.3

mon erreur exacte est: Unable find module for DevLoadingView , les solutions ci-dessus ne le corrigent pas pour moi

screen shot 2019-01-30 at 0 54 04

Semble lié à ce commit, qui a en fait ajouté sur RN 0.58.3

https://github.com/facebook/react-native/commit/d7a0c44590bcf3fb9d055aeae3391d5bcd7e21be#diff -a2a67635fffd7b690d14dc17ae563a71

Je rencontre le même problème «Impossible de trouver le module pour DevLoadingView» que @oferRounds après la mise à niveau vers RN 0.58.3 aujourd'hui.

Il semble se déclencher lorsqu'une application est ouverte pour la première fois dans le simulateur. Les recharges suivantes (cmd-R) ne présentent pas l'erreur.

EDIT: a déposé un problème distinct pour cette erreur spécifique: # 23235

Je peux également confirmer que c'est toujours un problème sur iOS avec 0.58.3.

Quelques observations intéressantes:

  • Comme l'a dit @superguineapig , il n'apparaît pas après le rechargement de l'application.
  • Si vous quittez toutes les instances de terminal et que vous créez l'application / redémarrez le packager, il _pas_ affichera l'erreur. Cependant, si vous laissez ensuite le packager ouvert et que vous recréez l'application à partir de Xcode, l'erreur apparaît après que l'application se soit à nouveau attachée au packager.

_Edit: je peux confirmer que cette solution de contournement est toujours une solution viable ._

J'ai pu contourner l'avertissement en mettant AppDelegate.m jour

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

Cela a fonctionné pour moi.

Quelqu'un a-t-il pu enregistrer un RCTBridgeDelegate personnalisé tout en utilisant la navigation react-native? Vous devriez pouvoir passer un délégué via le paramètre bridgeManagerDelegate , mais cela semble défectueux (le RCTBridge fourni à extraModulesForBridge est toujours nil ).

Je viens de commencer à l'obtenir immédiatement après avoir ajouté react-native-device-info sur RN 0.58.6 et iOS 12.

OK, ce commentaire semble l'avoir corrigé pour moi.

React Native 0.59.1

Je commence à voir cet avertissement juste après l'installation de react-native-device-info, une vraie solution?

Je vois cela au hasard aussi, et je n'ai apporté aucune modification dans le code de mon application autre que ce qui est nécessaire (config) pour que tout fonctionne à nouveau, en passant de RN 0.57.8 à 0.59.5. Dans mon cas, la lib en question est CodePush, avec 2 avertissements Yellowbox:

RCTBridge required dispatch_sync to load CodePush. This may lead to deadlocks
et
Required dispatch_sync to load constants for CodePush. This may lead to deadlocks

Ce numéro est long. Je suppose que clouer la cause fondamentale est toujours un mystère? Faites-moi savoir quelles autres informations de débogage je peux fournir pour vous aider.


Mon package.json:

{
  "name": "wonderswipe",
  "version": "0.0.1",
  "private": true,
  "eslintConfig": {
    "parserOptions": {
      "ecmaVersion": 7,
      "sourceType": "module",
      "ecmaFeatures": {
        "jsx": true
      }
    },
    "env": {
      "browser": false,
      "node": true
    },
    "plugins": [
      "react",
      "react-native",
      "react-hooks"
    ],
    "rules": {
      "comma-dangle": [
        2,
        "always-multiline"
      ],
      "semi": [
        2,
        "never"
      ],
      "react-native/no-unused-styles": 2,
      "react-native/split-platform-components": 2,
      "react-hooks/rules-of-hooks": "error"
    }
  },
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "postinstall": "patch-package"
  },
  "dependencies": {
    "@postlight/mercury-parser": "^2.0.0",
    "@react-native-community/async-storage": "^1.3.3",
    "@react-native-community/viewpager": "^1.1.6",
    "babel-plugin-idx": "^2.4.0",
    "buffer": "^5.2.1",
    "he": "^1.1.0",
    "idx": "^2.5.5",
    "lodash": "^4.17.2",
    "moment": "^2.19.0",
    "moment-timezone": "^0.5.10",
    "node-summary": "../node-summary",
    "react": "16.8.3",
    "react-native": "^0.59.4",
    "react-native-actionsheet": "^2.4.2",
    "react-native-blur": "^3.2.0",
    "react-native-cached-image": "../react-native-cached-image",
    "react-native-cheerio": "^1.0.0-rc.4",
    "react-native-code-push": "^5.3",
    "react-native-custom-tabs": "^0.1.7",
    "react-native-easy-toast": "^1.0.9",
    "react-native-firebase": "^5.3.1",
    "react-native-fit-image": "^1.4.8",
    "react-native-flanimatedimage": "^0.4.0",
    "react-native-highlight-words": "^1.0.1",
    "react-native-keep-awake": "^4.0.0",
    "react-native-linear-gradient": "^2.0.0",
    "react-native-modal-dropdown": "^0.6.2",
    "react-native-modalbox": "^1.6.0",
    "react-native-orientation": "^3.1.3",
    "react-native-parallax-scroll-view": "../react-native-parallax-scroll-view",
    "react-native-rate": "^1.0.8",
    "react-native-safari-view": "^2.0.0",
    "react-native-sentry": "^0.42.0",
    "react-native-sha256": "^1.1.1",
    "react-native-status-bar-size": "^0.3.2",
    "react-native-swiper": "^1.5.14",
    "react-native-tooltip": "^5.2.0",
    "react-native-tts": "^3.0.0",
    "react-native-vector-icons": "^6.4.2",
    "react-native-webview": "^5.7.0",
    "react-native-webview-bridge": "^0.40.1",
    "react-redux": "^7.0.1",
    "redux": "^4.0.0",
    "redux-thunk": "^2.1.0"
  },
  "devDependencies": {
    "babel-eslint": "^10.0.1",
    "eslint": "^5.15.1",
    "eslint-plugin-react": "^7.12.4",
    "eslint-plugin-react-hooks": "^1.0.1",
    "eslint-plugin-react-native": "^3.6.0",
    "patch-package": "^6.1.2",
    "postinstall-postinstall": "^2.0.0",
    "redux-logger": "^3.0.6"
  },
  "resolutions": {
    "babel-core": "7.0.0-bridge.0"
  }
}

image

J'ai corrigé cette erreur par le commentaire @grossingdev . mais après la mise à jour de react-native vers la version 0.59.8. cette erreur est revenue

À react-native 0.59.3, voici à quoi devrait ressembler le code pour contourner le problème:

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  #if RCT_DEV
    [bridge moduleForClass:[RCTDevLoadingView class]];
  #endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"YourAppName"
                                            initialProperties:nil];

Face au même avertissement après la mise à jour du fichier AppDelegate.m lors de l'intégration de la carte google react-native-maps dans l'application ios.
"react-native": "0.59.5"

Pour moi - cela a fonctionné ---
"réagir": "16.8.3",
"natif réactif": "0,59,9",
Fichier AppDelegate.m

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
//  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
//                                                   moduleName:@"mobileapp"
//                                            initialProperties:nil];


  NSURL *theurl ;
#if DEBUG
  theurl = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  theurl = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif

  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:theurl
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"mobileapp"
                                            initialProperties:nil];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  return YES;
}

@ amitkumar3968 formater votre commentaire sous forme de code

Je viens de recevoir une erreur similaire:
Screenshot 2019-07-23 at 10 27 04


mon package.json:

{
  "name": "auth",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "firebase": "^6.3.1",
    "react": "16.8.6",
    "react-native": "0.60.0"
  },
  "devDependencies": {
    "@babel/core": "7.5.0",
    "@babel/runtime": "7.5.0",
    "@react-native-community/eslint-config": "0.0.3",
    "babel-jest": "24.8.0",
    "eslint": "6.0.1",
    "jest": "24.8.0",
    "metro-react-native-babel-preset": "0.54.1",
    "react-test-renderer": "16.8.6"
  },
  "jest": {
    "preset": "react-native"
  }
}

Recharger l'a corrigé, mais il semble que quelque chose ne va pas si cela se produit au hasard.

Ce problème ne m'arrive que lorsque je désactive le débogueur. Lors de l'ouverture du Perf Monitor, j'ai remarqué que la RAM passe de ± 100 Mo à ± 300 Mo après la désactivation.

Avec le débogueur:
Screen Shot 2019-07-25 at 9 07 45 AM

Sans débogueur:
Screen Shot 2019-07-25 at 9 08 09 AM

La solution de contournement proposée ne fonctionne pas dans mon cas, car elle arrête uniquement d'afficher l'avertissement, mais elle ne résout pas le problème de mémoire.

Je me demande si ce problème affecterait les performances de l'application en mode version.

La solution de contournement susmentionnée a également résolu ce problème pour moi, sur React Native 0.59.10 :

diff --git a/ios/Foo/AppDelegate.m b/ios/Foo/AppDelegate.m
index e446e79..2c28719 100644
--- a/ios/Foo/AppDelegate.m
+++ b/ios/Foo/AppDelegate.m
@@ -18,6 +18,11 @@

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

+// https://github.com/facebook/react-native/issues/16376#issuecomment-350523177
+#if RCT_DEV && __has_include(<React/RCTDevLoadingView.h>)
+#import <React/RCTDevLoadingView.h>
+#endif
+
 <strong i="7">@implementation</strong> AppDelegate

@@ -39,6 +44,13 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(

   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
+
+  // https://github.com/facebook/react-native/issues/16376#issuecomment-350523177
+  #if RCT_DEV && __has_include(<React/RCTDevLoadingView.h>)
+  [bridge moduleForClass:[RCTDevLoadingView class]];
+  #endif
+
   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"Foo" initialProperties:nil];
   rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

La seule différence ici est que j'ai correspondu exactement à la même logique pour le charger (la partie RCT_DEV && __has_include(<React/RCTDevLoadingView.h>) ) ...

Je viens d'en avoir 2 avec react-native-firebase . Cela se produit rarement mais:
image
image

J'ai pu recréer ce problème en ajoutant des icônes d'application au répertoire Images.xcassets/AppIcon.appiconset de mon projet de test nouvellement créé à l'aide de react-native 0.61.2. L'ajout des lignes de code mentionnées dans ce numéro a résolu le problème pour moi.

natif de réaction 0,59,10
même problème.

même problème ici !! tout organisme a résolu ce problème?

J'ai pu contourner l'avertissement en mettant AppDelegate.m jour

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

cette solution de contournement a résolu l'avertissement. Merci beaucoup.

Même problème, mais si je supprime le bloc de code componentDidUpdate, cet avertissement disparaît. Mais mais mais j'ai besoin de componentDidUpdate.

d'abord: ouvrez Xcode, répondez normalement Xcode si vous voulez installer un composant: cliquez sur installer

Lorsque vous mettez à jour le logiciel macOS, vous devez ouvrir Xcode pour la mise à jour

J'ai pu contourner l'avertissement en mettant AppDelegate.m jour

#if RCT_DEV
#import <React/RCTDevLoadingView.h>
#endif
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation
                                            moduleProvider:nil
                                             launchOptions:launchOptions];
#if RCT_DEV
  [bridge moduleForClass:[RCTDevLoadingView class]];
#endif
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"Test"
                                            initialProperties:nil];
  ...
}

@grossingdev quel est le jsCodeLocation s'il vous plaît? Je sais que c'est censé être une URL, mais sur quoi doit-elle pointer?

Je viens d'en avoir 2 avec react-native-firebase . Cela se produit rarement mais:
image
image

Firebase est à l'origine de cette erreur pour moi. Vous pensez partager comment vous l'avez résolu? @fongilation

@ abdi4 Je viens de rencontrer ça aussi, avez-vous réussi à le résoudre?

@zloka non cela se produit au hasard et je ne peux pas le recréer

Le moyen le plus simple d'ignorer cet avertissement ou tout autre avertissement est

import { YellowBox } from 'react-native';

YellowBox.ignoreWarnings([
    'RCTBridge'
]);

Cette question se pose pour moi de manière non déterministe. Le seul correctif que j'ai à chaque fois est de supprimer l'application de mon appareil et de la réexécuter.

Solution rapide:

let bridge = RCTBridge (bundleURL: jsCodeLocation, moduleProvider: nil, launchOptions: nil)
#if RCT_DEV
bridge? .module (pour: RCTDevLoadingView.self)
#fin si
laissez rootView = RCTRootView (bridge: bridge !, moduleName: "AppMain", initialProperties: nil)

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté? Ce problème peut être résolu si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Discussion" ou l'ajouter au "Backlog" et je le laisserai ouvert. Merci pour vos contributions.

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté? Ce problème peut être résolu si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "Discussion" ou l'ajouter au "Backlog" et je le laisserai ouvert. Merci pour vos contributions.

Voici votre activité. L'avertissement continue à apparaître dans les nouvelles applications fraîches.

@sospedra pourriez-vous fournir un repo de ce qui se passe avec le modèle React Native sans aucune dépendance externe?

Pour les cas où cela se produit avec des bibliothèques tierces, les problèmes doivent être classés avec ces bibliothèques

même problème sur 0.63.2 Je ne suis pas sûr de la cause, cela se produit de manière aléatoire, parfois toutes les interactions de l'application ne fonctionnent plus.

Le même avertissement n'est fourni qu'avec React-native-macos sur les recharges Metro (manuelles) , pas sur la mise à jour des changements de code, et non sur iOS, Android ou Windows.
NB: pour moi avec RN 0.62.2

Vous avez le même avertissement avec une application Catalyst.

J'ai fermé le simulateur, tué le métro, en XCode build and run Attention disparu!

La fermeture du bundler de métro et la désinstallation de l'application du simulateur ont fait disparaître l'avertissement. Mais pas sûr de ce qui se passe sous le capot. un avertissement est apparu après l'ajout du package thunk.

Cette page vous a été utile?
0 / 5 - 0 notes