react-native run-android
termine en laissant un message dans le simulateur Android. Le message est le suivant:
Impossible de charger le script Assurez-vous que vous exécutez un serveur Metro ou que votre bundle 'index.android.bundle' est correctement emballé pour la publication.
Qu'est-ce que je fais mal?
41 Réponses :
Vous n'avez pas encore démarré le bundler. Exécutez npm start
ou react-native start
dans le répertoire racine de votre projet avant react-native run-android
.
j'exécute d'abord react-native start mais lors de l'exécution de react-native run-android, il se termine après la construction réussie
Vous devez avoir une console à 2 nœuds exécutée simultanément. L'un démarre et exécute le bundler, l'autre exécute l'émulateur.
Pour moi, cette erreur apparaît même si le bundler est démarré.
Assurez-vous que le port 8081 n'est pas bloqué. Assurez-vous également d'utiliser un terminal pour démarrer le bundler, attendez qu'il ait fini de charger le graphique de dépendances, puis exécutez react-native run-android sur un autre terminal.
@Nerdragen devrais-je attendre le chargement du graphe de dépendances en fait ** le chargement du graphe de dépendances est terminé. ** comme message sur cmd
@ Arbaz.in oui, vous devez d'abord attendre que le graphe de dépendances termine le chargement
J'ai eu le chargement de la dépendance fait message ce que nous la signification de ce message
Cela signifie que le conditionneur a fini de charger le graphique de dépendances et que vous pouvez démarrer l'émulateur
J'ai commencé l'émulateur le j'écris réagit-native run-android cette commande .après ce serveur de commande commence avec le port 8081
React-native start comman entraîne le chargement du graphe de dépendance ... fait et ne dit pas terminé ou quoi que ce soit
Lorsque le graphe de dépendance a fini de se charger, c'est tout ce qu'il dira. Gardez cette console ouverte et démarrez le débogueur
Sous Windows, il fonctionne tout seul, mais pas sous Linux, merci! Travaillez parfaitement!
@Nerdragen Comment puis-je vérifier si le port 8081 est bloqué ou non.
J'ai essayé d'exécuter mon code à partir de VS Code et j'ai eu la même erreur. Jusqu'à ce que j'utilise npm start et react-native run-android, merci
Un problème similaire s'est produit avec moi.
Apparemment, Mcafee bloque le port 8081. Il m'a fallu des heures pour comprendre cela.
Essayez de courir:
react-native run-android --port=1234
Lorsque l'application apparaît avec une erreur sur l'émulateur, accédez aux paramètres de développement ( Ctrl + M ).
Remplacez «hôte de débogage et port du périphérique» par «localhost: 1234».
Fermez l'application et démarrez-la à partir du tiroir d'applications.
merci pour un indice, j'ai dû ouvrir le port 8081 dans mon pare-feu et cela a commencé à fonctionner
Big upvote pour cela. Si vous avez Mcafee, j'essaierais ceci, cela a fonctionné pour moi.
Merci, j'ai enregistré mon projet
Je suis coincé ici depuis deux jours, je n'aurais jamais pensé que c'était un port bloqué! Merci beaucoup!
J'ai essayé de frapper le localhost: 8081 dans le navigateur mais pas de chance. Peu de recherches et découvert que macafee a bloqué ce port. Suivez votre chemin. Commencé à fonctionner parfaitement bien.
J'ai flâné sur la partie mcaffee, mais cela a aussi fonctionné pour moi. Vraiment apprécié. :)
IMPORTANT - Vous pouvez avoir de nombreux périphériques virtuels dans votre environnement. Assurez-vous que si vous changez AVD, vous répétez le réglage.
Si vous rencontrez une erreur ci-dessus, vous devez d'abord vérifier ce qui fonctionne sur le port 8081
Le moyen le plus rapide de trouver cela utilise la commande suivante dans le terminal
react-native run-android --port=9001
si cela vous montre quelque chose, cela signifie que le port est bloqué. si possible obtenir ce port débloqué.
Sinon, vous devrez changer le port. Le processus pour le faire a déjà été mentionné dans le commentaire ci-dessus par Naveen Kumar
netstat -aon | findstr 8081
Assurez-vous que 9001 n'est pas utilisé non plus :)
Essayez ce qui suit.
Peut-être qu'après les étapes précédentes, vous avez des exécutions npm start - --reset-cache
Je travaille, j'espère que cela vous aide.
Ma solution à cela est la suivante:
Démarrer le serveur Metro
$ react-native start
Démarrez Android
$ react-native run-android
Si vous voyez des erreurs indiquant «port 8081 déjà utilisé», vous pouvez arrêter ce processus et le réexécuter
$ react-native start
Voir la page de dépannage de React Native .
Par défaut, un petit serveur JavaScript appelé "Metro Server" s'exécute sur le port 8081.
Vous devez rendre ce port disponible pour que ce serveur démarre. Donc,
Comment libérer le port?
http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html
Comment tuer le processus utilisant actuellement un port sur localhost dans Windows?
et surtout, j'ai mis à jour ma version de nœud de 8.x à 10.x (dernière), comme suggéré par facebook @ https://facebook.github.io/react-native/docs/getting-started
Je veux juste ajouter une possibilité non évidente qui n'est pas couverte ici. J'utilise @ react-native-community / netinfo pour détecter les modifications du réseau, principalement l'état du réseau. Pour tester l'état du réseau hors tension, le commutateur WIFI (sur l'émulateur) doit être désactivé. Cela coupe également efficacement le pont entre l'émulateur et l'environnement de débogage. Je n'avais pas réactivé le WIFI après mes tests car j'étais loin de l'ordinateur et je l'ai rapidement oublié à mon retour.
Il est possible que cela soit également le cas pour quelqu'un d'autre et que cela mérite d'être vérifié avant de prendre d'autres mesures drastiques.
Ces étapes m'aident vraiment:
Étape 1: Créez un répertoire dans android / app / src / main / assets
Commande Linux : mkdir android/app/src/main/assets
Étape 2: Renommez index.android.js
(dans le répertoire racine) en index.js
( il existe peut-être un fichier index.js
auquel cas vous n'avez pas besoin de le renommer ), puis exécutez la commande suivante:
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
Étape 3: Créez votre APK: react-native run-android
Veuillez utiliser index.js dans la dernière version.
Prendre plaisir :)
Quel est l'emplacement de ce fichier dans react native project index.android.j
@ Arbaz.in dans le répertoire racine.
@ Arbaz.in Il y a peut-être un fichier index.js
dans le répertoire racine auquel cas vous n'avez pas besoin de le renommer
@Saeed oui l'a trouvé
@Saeed Steps pour Windows?
Pour tous (Mac, Linux, Windows)
Cela ne peut exécuter l'application que pour le moment, mais comment cela permettra-t-il le débogage et le chargement à chaud? ce n'est pas la solution parfaite pour y parvenir.
@buddhiv Alors quelle est la solution parfaite?
Cela a bien fonctionné pour moi. Mais je ne pouvais pas comprendre ce qui s'était passé. Cette erreur a commencé à se produire simplement parce que.
si tout est correctement configuré, essayez ceci:
adb inverse tcp: 8081 tcp: 8081
Pourquoi? "Lorsque RN Packager est en cours d'exécution, un serveur Web actif est accessible dans votre navigateur à l'adresse 127.0.0.1:8081. C'est à partir de ce serveur que le bundle JS de votre application est servi et actualisé au fur et à mesure que vous apportez des modifications. Sans le proxy inverse, votre téléphone ne pourra pas se connecter à cette adresse. "
tous les crédits à Swingline0
Pourriez-vous s'il vous plaît ajouter à votre réponse pourquoi cela devrait fonctionner et ce que fait cette commande?
j'ai passé toute la journée à essayer de basculer entre les bibliothèques et c'était mon problème
Pour moi, cette erreur a été causée par une mise à niveau de react-native
À partir d'Android 9.0 (niveau d'API 28), la prise en charge du texte clair est désactivée par défaut.
Si vous consultez le diff de mise à niveau, vous devez créer un manifeste de débogage android/app/src/debug/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" /> </manifest>
Voir pour plus d'informations: https://stackoverflow.com/a/50834600/1713216
A travaillé pour moi sur RN 0.61.3.
Malheureusement, cela n'a pas fonctionné pour moi. J'avais déjà cela et j'obtiens toujours la même erreur, même si Metro Bundler est en cours d'exécution.
J'ai trouvé que j'ai parfois besoin de remplacements supplémentaires si j'ai défini un networkSecurityConfig, il semble que ces paramètres soient toujours à l'origine des problèmes pour moi. Vous pouvez essayer de supprimer n'importe quelle configuration de sécurité et spécifier android:usesCleartextTraffic="true"
dans le AndroidManifest.xml
principal AndroidManifest.xml
voir si cela fonctionne?
J'ai tous ces paramètres, y compris Android: usesCleartextTraffic = "true", mais je ne peux toujours pas exécuter l'application sur un appareil réel.
J'avais le même problème, le problème pour moi était que adb n'était pas dans le bon chemin d'environnement, l'erreur vous indique le port de métro, pendant que vous êtes dans l'adb, les ports sont tués et redémarrés.
Remarque : ou selon l'emplacement de adb.exe sur votre ordinateur
Exécutez à nouveau Android Build
$ react-native run-android
Ou
$ react-native start
$ react-native run-android
Vous pouvez essayer ce qui suit:
Ajoutez cette ligne sur votre AndroidManifest.xml
<application [...] android:usesCleartextTraffic="true" /> [...] </application>
Après des heures à chercher une réponse. La solution était de faire un nœud de rétrogradation vers la version 12.4.
Dans mon cas, je me rends compte que l'erreur se produit juste dans la version react native 0.60 avec la version 12.6 du nœud.
J'ai vécu cela simplement parce que mon Wifi a été désactivé par erreur sur mon émulateur, je l'ai rallumé et il a commencé à fonctionner correctement. J'espère que c'est utile à quelqu'un
Pour moi, ce problème a commencé avec la mise à niveau de react-native. La mise à niveau était nécessaire pour ajouter la prise en charge 64 bits.
android { ... defaultConfig { ... targetSdkVersion 28 ... } ... }
De plus, une modification importante que j'ai apportée à la mise à niveau était dans ../android/build/build.gradle
Before: -------- Environment: Node: 10.15.0 npm: 6.9.0 Watchman: 4.9.0 Xcode: Not Found Android Studio: 3.4 AI-183.6156.11.34.5692245 Packages: (wanted => installed) react: 16.0.0-alpha.12 => 16.0.0-alpha.12 react-native: ~0.55.2 => 0.55.4 react-native-cli: 2.0.1 After: ------ info React Native Environment Info: Binaries: Node: 10.15.0 npm: 6.9.0 Watchman: 4.9.0 SDKs: Android SDK: API Levels: 23, 26, 27, 28 Build Tools: 27.0.3, 28.0.3 System Images: android-28 | Google APIs Intel x86 Atom IDEs: Android Studio: 3.4 AI-183.6156.11.34.5692245 Xcode: /undefined - /usr/bin/xcodebuild npmPackages: react: ^16.8.6 => 16.9.0 react-native: 0.59.9 => 0.59.9 npmGlobalPackages: create-react-native-app: 2.0.2 react-native-cli: 2.0.1
J'ai dû changer la targetSdkVersion de 27 à 28 après l'avertissement lorsque j'ai essayé de télécharger la version (.apk) sur la console de jeu goole. Je n'avais pas réalisé que c'était pour moi la cause première de l'erreur ci-dessus. Les réponses immédiates de @tom et @tinmarfrutos avaient un sens absolu.
J'ai résolu le problème en ajoutant android: usesCleartextTraffic = "true" à mon android / app / src / debug / AndroidManifest.xml
Si vous utilisez un système d'exploitation Linux, il se peut que votre serveur distant npm ne fonctionne pas. Ouvrez un autre terminal (avec le répertoire du projet) et exécutez cette commande sudo npm start ou sudo react-native start avant de faire sudo react-native run-android
Dans mon cas, j'ai défini un proxy dans mon émulateur. Cela revient à la normale après avoir supprimé ce proxy.
Le message d'erreur sur l'émulateur est un peu trompeur. Dans mon cas, j'ai utilisé un Macbook. J'avais besoin de modifier les autorisations sur android / gradlew en exécutant $ chmod 755 ./gradlew
, puis l'application pouvait être créée et déployée sur l'émulateur Android.
Si vous êtes sous Linux, ouvrez le terminal à partir du répertoire racine de l'application et exécutez
react-native run-android
puis ouvrez une autre fenêtre de terminal et exécutez:
npm start
Dans certains cas, vous voudrez peut-être fermer le port du bundler natif React et réexécuter l'application avec le même processus
1.sudo kill -9 $(sudo lsof -t -i:9001) 2.npm start inside the project 3. react-native run-android
Ce qui a fonctionné pour moi était:
$ adb devices
$ react-native run-android
la possibilité de cette erreur est également le mauvais chemin, vérifiez une fois
export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/ export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Jamais pensé à ça. Mais c'était la réponse pour moi.
ajoutez simplement trois éclaboussures dans: node_modules \ metro-config \ src \ defaults \ blacklist.js
remplacez cette pièce:
var sharedBlacklist = [ /node_modules[\/\\]react[\/\\]dist[\/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
J'ai également été confronté à ce problème. J'ai résolu cette étape suivante.
Vérifiez le chemin du sdk android dans Environment Veritable.
Ajoutez ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk
dans la variable système
et C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools
chemin dans la variable système
remplacer sharedBlacklist comme ci-dessous le segment de code,
var sharedBlacklist = [ /node_modules[\/\\]react[\/\\]dist[\/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
dans node_modules / metro-config / src / default / blacklist.js
Ensuite, exécutez npx react-native run-android --port 9001
Bon codage ..!
Après avoir essayé de résoudre ce problème dans mon espace de travail, j'ai trouvé une solution.
Cette erreur est due au fait qu'il y a un problème avec Metro en utilisant certaines combinaisons de version NPM et Node.
Vous avez 2 alternatives:
Alternative 2: Accédez à ce fichier: \node_modules\metro-config\src\defaults\blacklist.js
et modifiez ce code:
var sharedBlacklist = [ /node_modules[\/\\]react[\/\\]dist[\/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
et changez en ceci:
var sharedBlacklist = [ /node_modules[/\\]react[/\\]dist[/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
Veuillez noter que si vous exécutez une
npm install
ou uneyarn install
vous devez à nouveau modifier le code.
À partir d'Android 9.0 (niveau d'API 28), la prise en charge du texte clair est désactivée par défaut.
C'est ce que vous devez faire pour vous débarrasser de ce problème si vous exécutez correctement les commandes normales
Et modifiez votre fichier manifeste Android comme ceci.
<application android:name=".MainApplication" android:icon="@mipmap/ic_launcher" android:usesCleartextTraffic="true" // add this line with TRUE Value. android:theme="@style/AppTheme">
Effectuez d'abord les étapes 4 et 5, puis vous pouvez exécuter votre projet. Si vous n'obtenez pas le résultat (avec les étapes 4 et 5), procédez comme suit
1- Essayez de rétrograder la version de votre Node (la version actuelle est 12.13.1
)
error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.
2- Ajoutez le chemin du module npm ( C:\Users\your user name\AppData\Roaming\npm
) aux variables système au lieu des variables utilisateur
3- Installez react native globalement en utilisant la commande
react-native run-android
4- Allez à la racine de votre répertoire de projet et exécutez la commande suivante:
react-native start
5- Ouvrez un autre terminal à la racine de votre projet et exécutez la commande suivante:
npm install -g react-native-cli
ÉDITER :
Vous utilisez Genymotion? Si oui, procédez comme suit:
Après l'étape ci-dessus si vous obtenez l'erreur suivante?
choco uninstall nodejs choco install nodejs --version 12.8
Ouvrez votre genymotion et accédez à:
menu genymotion -> Paramètres -> ADB -> Sélectionnez ensuite utiliser les outils sdk android personnalisés (cliquez sur parcourir pour trouver l'emplacement du sdk)
Enfin, exécutez à nouveau votre projet.
12.9 a également fonctionné pour moi, merci, j'avais mis à niveau vers la version 12.13.x et j'ai commencé à avoir le problème ci-dessus.
Contexte de cette réponse: github.com/facebook/react-native/issues/26598
Cela a fonctionné pour moi, mais j'ai ensuite reçu le development server returned response error code: 500
... Metro has encountered an error: EACCESS: permission denied /tmp/metro-cache/33/....
Un chmod +777 /tmp -R
rapide chmod +777 /tmp -R
sur mon ordinateur local a résolu le problème. Attention: jamais +777 :-D
Cela a fonctionné pour moi après avoir essayé plusieurs façons.
Dans le fichier node_modules\metro-config\src\defaults\blacklist.js
Remplacer:
var sharedBlacklist = [ /node_modules[\/\\]react[\/\\]dist[\/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
avec :
var sharedBlacklist = [ /node_modules[/\\]react[/\\]dist[/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
J'espère que cela t'aides.
A travaillé comme un charme, merci
A travaillé pour moi aussi. Mais pourquoi ai-je dû le corriger? Qu'est ce qui ne s'est pas bien passé?
À première vue, metro-config
utilisé \ pour les chemins au lieu de /, que cette réponse suggère de modifier. Ne fais pas ça . La modification des packages npm signifie que toute votre équipe doit le faire sur sa machine, en CI, en préparation, en production et à chaque fois que metro-config publie une mise à jour. Une meilleure approche consiste à fourcher metro-config sur GitHub, à valider un correctif, à pousser et à soumettre un PR pour le corriger pour tout le monde.
mettre à jour cette pièce dans la liste noire du métro
var sharedBlacklist = [ /node_modules[\/\\]react[\/\\]dist[\/\\].*/, /website\/node_modules\/.*/, /heapCapture\/bundle\.js/, /.*\/__tests__\/.*/ ];
vous pouvez également rétrograder le nœud js à la version inférieure à 12 et supprimer nodemodule, puis exécuter à nouveau npm install
J'ai fait: React-native start et npx react-native run-android.
Cependant, pour Min19, (basé sur Ubuntu), j'avais le même problème jusqu'à ce que je lance:
echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
De: https://reactnative.dev/docs/troubleshooting#content
Au moins, j'ai lancé l'application sur mon téléphone portable.
Essayez ces étapes si vous avez essayé tout ce qui est mentionné dans les solutions ci-dessus:
bundle react-native --platform android --dev false --entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets-dest android / app / src / main / res
Wow, cela m'a aidé partiellement. Je préparais mon application pour google play market, tout ce que j'ai fait, c'est ajouter de nouvelles icônes d'actifs pour Android et changer le versin cible en 28. J'ai dû revenir à la version v27 et tout recommencer à travailler ... Je ne sais pas pourquoi réagir sans travailler avec sdk v28.
J'ai eu le même problème, après avoir suivi les étapes suivantes, le problème a été résolu
watchman watch-del-all
claires: watchman watch-del-all
.rm -rf node_modules && npm install
.rm -rf /tmp/metro-bundler-cache-*
rm -rf /tmp/haste-map-react-native-packager-*
Je suis sûr que c'est une combinaison des autres choses mentionnées ici, comme autoriser le texte clair, que j'ai activé pour localhost. Mais c'était la dernière pièce du puzzle.
project.ext.react = [ entryFile: "index.js", // ADD THESE THREE bundleAssetName: "index.android.bundle", bundleInDebug: true, bundleInRelease: true ]
RN: 0,61,3
J'ai rencontré le même problème en suivant le tutoriel React Native (développement sous Linux et ciblage Android).
Ce problème m'a aidé à résoudre le problème dans les étapes suivantes. Exécutez les commandes suivantes dans la séquence ci-dessous:
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
Vous pouvez automatiser les étapes ci-dessus en les plaçant dans des scripts
faisant partie de package.json
comme ceci:
"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
Ensuite, vous pouvez simplement exécuter npm run android-linux
partir de votre ligne de commande à chaque fois.
Apparemment, aucune des réponses n'a résolu le problème pour moi. J'ai pu exécuter l'application native react sur l'émulateur, mais le même code (même lorsque le serveur était en cours d'exécution) m'a donné cette erreur lors de l'exécution de l'application sur l'appareil.
J'ai pu le résoudre en exécutant la commande suivante dans le terminal:
adb reverse tcp:8081 tcp:8081
J'ai eu le même problème. Mais cette méthode l'a résolu. Accédez au dossier android en utilisant cd android
puis gradlew clean
ou ./gradlew clean
selon ce qui fonctionne pour votre système d'exploitation.
J'ai rencontré un problème similaire. npx react-native init
crée un fichier .gitignore qui ignore le dossier <project>/android/app/src/debug
. Si vous avez cloné ultérieurement ce projet, ce dossier sera manquant. La solution est simple. À l'avenir, ajoutez cette ligne au bas du fichier .gitignore.
!android/app/src/debug
Pour votre projet actuel, demandez au créateur du projet de valider ce dossier. J'ai rencontré cette erreur avec la version 0.63 native de react
Comme la plupart d'entre nous, je suppose que vous utilisez VSCODE. Dans mon cas, j'ai couru
démarrage natif de réaction npx
depuis un terminal séparé
Maintenant, exécutez npx react-native run-android à partir de votre terminal dans VSCODE
Voici comment j'ai résolu ce problème sans toucher à la construction:
1- Fermé le périphérique virtuel
2- Testé sur un périphérique physique - (cela fonctionne)
3- Création d'un nouvel appareil virtuel avec l'API 30 Android 10+
4- Essayez à nouveau sur le périphérique virtuel nouvellement créé, et tout fonctionne comme un charme.
pouvez-vous essayer ce lien stackoverflow.com/questions/32572399/... ?
J'ai le même problème car mon appareil n'est pas connecté à Internet.
Cette erreur arrive: throw er; // Evénement "erreur" non géré
Je l'ai trouvé et je l'ai posé sur stackoverflow.com/a/58570426/6852210
@Belle Solution, avez-vous trouvé une solution?
Bon sang @HuoChhunleng J'ai failli virer mon ordinateur portable. Merci beaucoup pour le tuyau !!
Mybe cela vous aidera. medium.com/@adityasingh_32512/…
J'ai eu cette erreur avec AVD. Je viens d'ouvrir Android Studio> AVD Manager> Wipe Data. Cela a fonctionné pour moi.