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.
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.