React native ERROR Packager no puede escuchar en el puerto 8081

84

Cuando ejecuto el comando react-native start, se muestra Packager can't listen on port 8081.

Sé que el problema está relacionado con el software que usa mi puerto 8081.

Utilizo Resource Monitor para ver el puerto, pero no puedo encontrar 8081, no hay 8081

¿Alguien puede mostrarme cómo encontrarlo?

ingrese la descripción de la imagen aquí

Morton
fuente
1
Eche un vistazo a esta publicación , debería encontrarla.
Antoine Grandchamp
Además de las otras respuestas, asegúrese de que el paquete de Metro no se esté ejecutando en alguna ventana de terminal olvidada en algún lugar.
Lurifaxel

Respuestas:

108

Puede ejecutar el empaquetador en otro puerto.

$ react-native start --port=8088

Alternativamente, averigüe qué está usando qué puertos en Windows con netstat.

$ netstat -a -b -o

Netstat le proporciona un PID, que puede utilizar para finalizar el proceso.

$ taskkill /pid 1234
Viktor Seč
fuente
146

En una Mac, ejecute el siguiente comando para encontrar la identificación del proceso que está usando el puerto 8081
sudo lsof -i :8081
Luego ejecute lo siguiente para terminar el proceso:
kill -9 23583

Así es como se verá ingrese la descripción de la imagen aquí

RC_02
fuente
4
También funciona en ubuntu 18.04
theapache64
1
También funcionó para mí, en MacOS High Sierra
Liran H
1
Agradable agradable agradable muy agradable, gracias.
Jeaf Gilbert
31

Este error se produce porque ya se está ejecutando algún proceso en el puerto 8081. Detenga ese proceso y luego ejecute su comando, ejecutará su código. Para esta primera lista todos los procesos que están usando este puerto escribiendo

lsof -i :8081  

Este comando listará el ID de proceso (PID) del proceso y luego matará el proceso del nodo usando

kill -9 <PID>  

Aquí PID es el ID de proceso del proceso de nodo.

Pulkit Aggarwal
fuente
19

De hecho, esa imagen muestra que su 8081 no está en uso. Si las sugerencias anteriores no han ayudado y su dispositivo móvil está conectado a su computadora a través de USB (y tiene Android 5.0 (Lollipop) o superior), puede probar:

$ adb reconnect

Esto no es necesario en la mayoría de los casos, pero por si acaso, restablezcamos su conexión con su móvil y reiniciemos el servidor adb. Finalmente:

$ adb reverse tcp:8081 tcp:8081

Por lo tanto, siempre que su dispositivo móvil intente acceder a cualquier puerto 8081 en sí mismo, será enrutado al puerto 8081 de su PC.

O uno podría intentar

$ killall node
Miodrag Smolovic
fuente
9

Ubuntu / Unix && MacOS

Mi Metro Bundler estaba atascado y había muchos procesos de nodo en ejecución, pero no tenía ningún otro desarrollo en marcha además de react-native, así que ejecuté:

$ killall -9 node

Metro Bundler se ejecuta a través del nodo en el puerto 8081 de forma predeterminada y, a veces, puede encontrar problemas por los que se atasca (generalmente debido a presionar CTRL+ Sen rápida sucesión con la recarga en caliente activada). Si presiona CTRL+ Cpara finalizar el react-native run-androidproceso, de repente lo pasará mal porque react-native-run-androidse atascará en:

Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)

Reparar:

$ killall -9 node

$ react-native run-android

Nota: si está desarrollando otras aplicaciones en ese momento, eliminar todos los procesos de nodo puede interrumpirlos o cualquier servicio basado en nodos que tenga en ejecución, así que tenga en cuenta la naturaleza generalizada de killall -9. Si no está ejecutando una aplicación o base de datos basada en nodos o no le importa reiniciarlos manualmente, entonces debería estar listo.

La razón por la que dejo esta respuesta detallada a esta pregunta semi-no relacionada es que la mía es una solución a un problema común semi-relacionado que lamentablemente requiere 2 pasos para solucionarlo, pero afortunadamente solo toma 2 pasos para volver al trabajo.

Si desea eliminar quirúrgicamente exactamente la basura de Metro Bundler en el puerto 8081, siga los pasos de la respuesta de RC_02 , que son:

$ sudo lsof -i :8081

$ kill -9 23583

(donde 23583 es ​​el ID del proceso)

agm1984
fuente
6

Toma la terminal y escribe

fuser 8081/tcp

Obtendrá un ID de proceso que está usando el puerto 8081 Ahora finalice el proceso

kill <pid>
Galleta de la fortuna
fuente
3

Debe eliminar todos los procesos que se ejecutan en el puerto 8081 kill -9 $(lsof -i:8081)

Nagibaba
fuente
2

Verifique si ya hay un servidor de nodo ejecutándose en su máquina y luego ciérrelo.

Hitesh Sahu
fuente
2

Intente ejecutar en otro puerto como 3131. Ejecute el comando:

react-native run-android --port=3131
alvaropaco
fuente
McAfee está usando este puerto en mi caso. Como se mencionó, la ejecución en diferentes puertos ayuda.
Muthu
1

Esto puede deberse a que McAfee está usando ese puerto. Haciendo simplelsof -i 8081 posible que no muestre la aplicación y es posible que deba sudo.

Hazlo sudo lsof -i 8081y si este comando da una salida, puedes eliminarlo usando sudo launchctl remove com.mcafee.agent.macmn. Después de esto, inicie el empaquetador nuevamente.

Sankalp
fuente
1

en mi caso, Internet en el emulador no funciona porque no hay señal wifi en el emulador. Restablecer el emulador ha funcionado.

Rohit Mandiwal
fuente
0

Para solucionar este problema, el proceso que he mencionado a continuación.

Cancele el proceso actual de "react-native run-android" con CTRL + C o CMD + C

Cierre la línea de comando de la ventana de Metro bundler (terminal) que se abrió automáticamente.

Ejecute el comando nuevamente en la terminal, "react-native run-android

Nirav Jain
fuente
0

En primer lugar, en su dispositivo, vaya a Dev. Opción -> ADB sobre la red después de hacerlo:

$ adb connect <your device adb network>
$ react-native run-android 

(o run-ios, por cierto)

Si esto ha tenido éxito, su dispositivo ha instalado app-debug.apk, abra app-debug y vaya a Dev. Configuración -> Depurar el servidor y puerto del servidor para el dispositivo , escriba la dirección IP de su máquina (generalmente, Preferencia del sistema -> Red ), como en el siguiente ejemplo < dirección IP de su máquina > : 8081 (sin desigualdad)

finalmente, ejecute el siguiente comando

$ react-native start --port=8081

pruebe con otros puertos y verifique que su máquina y su dispositivo sean la misma red.

Hermanyo H
fuente