Quand je commande react-native start
, il affiche Packager can't listen on port 8081
.
Je sais que le problème concerne certains logiciels utilisant mon port 8081.
J'utilise Resource Monitor pour voir le port, mais je ne peux pas trouver 8081, il n'y a pas de 8081, quelqu'un peut m'apprendre à le trouver? Merci d'avance.
Vous pouvez exécuter le conditionneur sur un autre port.
$ react-native start --port=8088
Vous pouvez également rechercher quels ports utilisent Windows avec netstat.
$ netstat -a -b -o
Netstat vous donne un PID, que vous pouvez utiliser pour tuer le processus.
$ taskkill /pid 1234
Cette erreur vient car un processus est déjà en cours d'exécution sur le port 8081. Arrêtez ce processus et ensuite exécutez votre commande, il exécutera votre code. Pour cette première liste, tous les processus qui utilisent ce port en tapant
lsof -i :8081
Cette commande liste l’identifiant de processus (PID) du processus, puis tue le processus de noeud en utilisant
kill -9 <PID>
Ici, le PID est l'identifiant du processus du noeud.
Cette image montre en effet que votre 8081 n'est pas utilisé. Si les suggestions ci-dessus ne vous ont pas aidé et que votre appareil mobile est connecté à votre ordinateur via USB (et que vous utilisez Android 5.0 (Lollipop) ou une version ultérieure), vous pouvez essayer:
$ adb reconnect
Ce n'est pas nécessaire dans la plupart des cas, mais juste au cas où, réinitialisons votre connexion avec votre mobile et redémarrez le serveur adb. Finalement:
$ adb reverse tcp:8081 tcp:8081
Ainsi, chaque fois que votre appareil mobile tente d’accéder au port 8081 sur lui-même, il sera routé vers le port 8081 de votre PC.
Ou on pourrait essayer
$ killall node
Prenez le terminal et tapez
fuser 8081/tcp
Vous obtiendrez un identifiant de processus utilisant le port 8081Maintenant, supprimez le processus.
kill <pid>
buntu/Unix && MacOS
Mon Metro Bundler était bloqué et il y avait beaucoup de processus de nœuds en cours d'exécution mais je n'avais pas d'autre développement en cours en dehors de react-native, alors j'ai lancé:
$ killall -9 node
Par défaut, Metro Bundler traverse le noeud sur le port 8081 et peut rencontrer des problèmes qui le bloquent parfois (généralement à cause de la pression sur CTRL+S successivement avec rechargement à chaud). Si vous appuyez sur CTRL+C pour tuer le processus react-native run-Android
, vous allez soudainement passer un mauvais moment car react-native-run-Android
restera bloqué sur:
Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)
Réparer:
$ killall -9 node
$ react-native run-Android
Remarque: Si vous développez d'autres applications à ce moment-là, la suppression de tous les processus de nœud peut les interrompre ou de tout service basé sur un nœud en cours d'exécution. Soyez donc conscient de la nature générale de killall -9
. Si vous n'exécutez pas de base de données ou d'application basée sur un nœud ou si cela ne vous dérange pas de les redémarrer manuellement, vous devriez pouvoir le faire.
La raison pour laquelle je laisse cette réponse détaillée sur cette question semi-sans lien est que le mien est une solution à un problème commun semi-lié qui nécessite malheureusement deux étapes à résoudre mais qui, heureusement, ne prend que deux étapes pour se remettre au travail.
Si vous souhaitez supprimer chirurgicalement exactement les déchets Metro Bundler sur le port 8081, suivez les étapes de la réponse de RC_02, qui sont:
$ Sudo lsof -i :8081
$ kill -9 23583
(où 23583 est l'ID de processus)
Vérifiez si un serveur de nœud est déjà en cours d'exécution sur votre ordinateur, puis fermez-le.
Vous devez tuer tous les processus en cours d'exécution sur le port 8081 en kill -9 $(lsof -i:8081)
Essayez d’exécuter sur un autre port comme 3131. Exécutez la commande suivante:
react-native run-Android --port=3131
Afin de résoudre ce problème, le processus que j'ai mentionné ci-dessous.
S'il vous plaît annuler le processus en cours de "réactif natif run-Android" par CTRL + C ou CMD + C
Fermez la ligne de commande de la fenêtre de metro bundler (terminal) qui s’est ouverte automatiquement.
Exécutez à nouveau la commande sur le terminal, “react-native run-Android
Cela est peut-être dû au fait que McAfee utilise ce port. Faire simple lsof -i 8081
peut ne pas montrer l'application et vous devrez peut-être le faire.
Faites Sudo lsof -i 8081
et si cette commande donne une sortie, vous pouvez la tuer en utilisant Sudo launchctl remove com.McAfee.agent.macmn
. Après cela, recommencez le conditionneur.
dans mon cas, Internet sur l'émulateur est en panne car il n'y a pas de signal wifi sur l'émulateur. La réinitialisation de l'émulateur a fonctionné.
Tout d’abord, dans votre appareil, accédez à Dev. Option -> ADB sur le réseau Après le faire:
$ adb connect <your device adb network>
$ react-native run-Android
(ou run-ios, au fait)
si cela a réussi, votre appareil a installé app-debug.apk, ouvrez app-debug et allez à Dev. Paramètres -> Serveur de débogage Hôte et port du périphérique , , Entrez l'adresse IP de votre machine (généralement, Préférences système -> Réseau ), comme dans l'exemple ci-dessous < adresse IP de votre machine >: 8081 (sans inégalité)
enfin, exécutez la commande ci-dessous
$ react-native start --port=8081
essayez d'autres ports et vérifiez que votre machine et votre périphérique sont sur le même réseau.