running react packager metro mac error done dependency react-native

react-native - metro - react native packager is running.



Reaccionar ERROR nativo El empaquetador no puede escuchar en el puerto 8081 (13)

Cuando ordeno el react-native start , muestra que Packager can''t listen on port 8081 .

Sé que el problema es sobre algún software que usa mi puerto 8081.

Uso el Monitor de recursos para ver el puerto, pero no puedo encontrar el 8081, no hay un 8081, ¿alguien puede enseñarme cómo encontrarlo? Gracias por adelantado.


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 además de react-native, así que ejecuté:

$ killall -9 node

El Metro Bundler se ejecuta a través del nodo en el puerto 8081 de forma predeterminada, y puede encontrar problemas a veces por los cuales se atasca (generalmente debido a presionar CTRL + S en rápida sucesión con la recarga activa). Si presiona CTRL + C para matar el proceso react-native run-android , de repente tendrá un mal momento porque react-native-run-android se atascará en:

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

Fijar:

$ 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 esté ejecutando, así que tenga en cuenta la naturaleza radical de killall -9 . Si no está ejecutando una base de datos o aplicación basada en nodos o no le importa reiniciarlos manualmente, entonces debería estar listo.

La razón por la que dejo esta respuesta detallada en esta pregunta semi-no relacionada es que la mía es una solución a un problema semi-relacionado común que lamentablemente requiere 2 pasos para solucionarlo, pero por suerte 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 en la respuesta de RC_02 , que son:

$ sudo lsof -i :8081 $ kill -9 23583

(donde 23583 es ​​la ID del proceso)


Compruebe si ya hay un servidor Node ejecutándose en su máquina y luego ciérrelo.


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


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

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

(o run-ios, por cierto)

Si esto se ha realizado correctamente, su dispositivo ha instalado app-debug.apk, abra app-debug y vaya a Dev. Configuración -> Depurar servidor host y puerto para 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, ejecuta el siguiente comando

$ react-native start --port=8081

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


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

Así es como se verá


Esa imagen de hecho muestra que su 8081 no está en uso. Si las sugerencias anteriores no le 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 las dudas, restablezcamos su conexión con su dispositivo móvil y reiniciemos el servidor adb. Finalmente:

$ adb reverse tcp:8081 tcp:8081

Por lo tanto, cada vez que su dispositivo móvil intente acceder a cualquier puerto 8081 en sí mismo, se enrutará al puerto 8081 de su PC.

O uno podría intentar

$ killall node


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 utilizan este puerto escribiendo

lsof -i :8081

Este comando enumerará el ID del proceso (PID) del proceso y luego matará el proceso del nodo utilizando

kill -9 <PID>

Aquí PID es la identificación del proceso del proceso del nodo.


Esto podría deberse a que McAfee usa ese puerto. Hacer simple lsof -i 8081 puede no mostrar la aplicación y puede que tenga que sudo.

sudo lsof -i 8081 y si este comando proporciona un resultado, puede eliminarlo utilizando sudo launchctl remove com.mcafee.agent.macmn . Después de esto, comience a empacar nuevamente.


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

react-native run-android --port=3131


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

Cancele el proceso actual de "react-native run-android" por 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


Puede ejecutar el empaquetador en otro puerto.

$ react-native start --port=8088

Alternativamente, descubra qué está utilizando qué puertos en Windows con netstat.

$ netstat -a -b -o

Netstat le proporciona un PID, que puede usar para eliminar el proceso.

$ taskkill /pid 1234


Toma la terminal y escribe

fuser 8081/tcp

Obtendrá un Id. De proceso que utiliza el puerto 8081. Ahora elimine el proceso.

kill <pid>


en mi caso, internet en el emulador está caído ya que no hay señal wifi en el emulador. El reinicio del emulador ha funcionado.