187 votes

erreur "Could not get BatchedBridge, make sure your bundle is packaged properly" au démarrage de l'application

En essayant de créer un projet react-native sur Android 4.4.2, j'obtiens cet écran d'erreur

said error

et je n'ai trouvé aucun moyen de le résoudre. J'ai essayé de redémarrer le packager, de reconnecter le périphérique, et même de réinstaller react native et de lancer un nouveau projet. Sur les versions 6.0.0 et ultérieures, cela fonctionne parfaitement.

1 votes

Avez-vous obtenu cette erreur après avoir exécuté react-native run-android ? J'obtiens l'erreur dans ce cas, ce qui est bizarre car en mode débogage, le bundle JS ne devrait pas être nécessaire puisqu'il est censé se connecter au serveur de paquets.

0 votes

J'ai posté une réponse au même problème ici : stackoverflow.com/a/45110063/706798

0 votes

Je reçois le même message d'erreur, mais pour iOS. Quelqu'un a-t-il des conseils ? J'ai essayé d'exécuter 'react-native run-ios', mais cela ne fonctionne pas, car XCode est sur un disque externe pour moi.

151voto

tbo Points 3649

Une solution possible pour cela est que vous n'avez probablement pas regroupé votre application en premier, effectuez les étapes suivantes et déployez ensuite votre app-debug.apk sur votre appareil.

$ cd myproject  
$ react-native start > /dev/null 2>&1 &  
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"

(si le dossier assets n'existe pas, créez-le)

Puis exécuter à partir de la racine du projet

$> (cd android/ && ./gradlew assembleDebug)

installez l'apk créé sur votre appareil, depuis l'emplacement : android/app/build/outputs/apk/app-debug.apk

faites-moi savoir si cela résout votre problème

EDIT :

Vous pouvez simplement le mettre dans votre package.json comme un script pour l'automatiser, je crois qu'il sera corrigé dans les prochaines versions de react-native et sera exécuté avant l'assemblage de l'APK final, donc ce ne sera pas nécessaire (je l'espère aussi bien)

mis :

"scripts": {
    "build": "(cd android/ && ./gradlew assembleDebug)",
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
  },

ou, comme mentionné, l'équivalent en curl, mais dans la plupart des cas, la méthode ci-dessus est plus robuste.

4 votes

Oui, ça marche ! !! Qu'est-ce que je viens de faire ? pourquoi curl ? aussi, est-ce que cela peut être automatisé ?

0 votes

Merci beaucoup, car mon application n'est pas liée au bundle React native.

3 votes

Ça ressemble à un piratage. Si vous regroupez le JavaScript dans un seul fichier, n'obtiendrez-vous pas la capacité de rechargement en direct lors de l'exécution de l'application pendant le développement ?

115voto

Felipe Points 2790

Je suis également tombé sur ce problème. Ce que j'ai fait, c'est de forcer l'arrêt de l'application sur mon appareil, puis j'ai ouvert une autre console et exécuté

react-native start

puis j'ai rouvert l'application depuis mon appareil et elle a recommencé à fonctionner.

EDIT : Si vous utilisez un appareil Android via USB et que vous l'avez débranché ou que votre ordinateur s'est mis en veille, il se peut que vous deviez d'abord exécuter

adb reverse tcp:8081 tcp:8081

5 votes

Cela a résolu mon problème en utilisant react-native run-android . Utilisation de react-native start n'a jamais été nécessaire pour moi quand je faisais react-native run-ios

2 votes

Cela a fonctionné, mais pourquoi cela se produit-il ? Est-ce que cela va être réparé ? Dois-je toujours ouvrir 2 terminaux, et faire le 'start' d'abord avant de pouvoir l'exécuter sur un appareil ?

0 votes

Cela fonctionne pour moi aussi ! j'ai passé des heures à trouver une solution

29voto

cube Points 541

Je viens de recevoir cette erreur. Voici ce que j'ai fait pour la corriger : J'ai sélectionné Dismiss dans le menu Développeur, puis Dev Settings , Choisissez Debug server host & port for device J'ai ajouté l'adresse IP de mon ordinateur et le port : 192.168.0.xx:8xxx utilisez l'adresse IP assignée à votre machine de développement sur votre réseau wifi. Le port est généralement :8081

Une fois que j'ai fait ça, tout s'est bien passé. Aussi, lorsque vous êtes dans le menu dev, n'oubliez pas de sélectionner Enable Live Reload y Debug JS Remotely il vous rend la vie beaucoup plus facile pendant le débogage.

0 votes

Fonctionne ! Pour l'utilisateur ubuntu : exécuter ifconfig puis trouver inet addr:xxx.xxx.xxx.xxx où xxx* est l'adresse IP de votre machine de développement.

0 votes

Cela a fonctionné pour moi sur une API de niveau 19 / Kitkat 4.4, cf. stackoverflow.com/questions/31525431/ , facebook.github.io/react-native/docs/

0 votes

Merci ! Je ne dois faire cette configuration que lorsque je débogue sans câble USB (avec des outils comme WiFi ADB).

23voto

Chaim Salzer Points 221

Voici ce qui a fonctionné pour moi (après avoir essayé toutes les autres solutions que j'ai trouvées...) :

Exécuter adb reverse tcp:8081 tcp:8081 à l'intérieur de \Android\sdk\platform-tools

1 votes

On peut lancer cette commande n'importe où, sans avoir besoin d'être dans platform-tools

1 votes

J'ai trouvé que react-native run-android tente d'exécuter cette commande et dépend de la variable d'environnement Windows path pour contenir le platform-tools chemin.

1 votes

Merci, ça a marché. PATH est C:\Users\USERNAME\AppData\Local\Android\sdk\platform -outils

16voto

Richh94 Points 172

J'ai eu cela aussi quand j'ai commencé pour la première fois avec React Native, en utilisant un appareil physique. Si c'est le cas, vous devez faire quelques choses supplémentaires avant de pouvoir commencer. Vous devez entrer quelques informations sur votre machine de développement dans les 'Dev Settings' de React Native.

Quand vous voyez l'erreur, secouez votre appareil . Une boîte de dialogue s'ouvre, la dernière option est 'Dev Settings'. Sélectionnez 'Debug server hot & port for device' et entrez votre IP locale et le port utilisé (généralement 8081).

Voir le dernier paragraphe de https://facebook.github.io/react-native/docs/running-on-device-Android.html

0 votes

Il s'agit littéralement d'une répétition, mot pour mot, de ce que j'ai dit plus haut (en août).

3 votes

Je ne savais pas que je devais secouer l'appareil. D'abord, je l'aurais bien publié en tant que commentaire, mais je n'ai pas assez de points pour le faire. J'ai mis un vote positif sur votre message.

0 votes

La solution la plus simple et la plus propre. Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X