No se pueden enviar solicitudes HTTP a Localhost Backend desde la aplicación React Native Mobile
¡Primer día de 2022~! Aprender a desarrollar aplicaciones móviles está dando dolores de cabeza. No puede ser tan difícil de configurar. Ya he perdido 6 horas. ¡Por favor ayuda!
Situación Mi entorno de desarrollo se ejecuta en Ubuntu a través de VMWare alojado en Windows 10. Dentro de este entorno tengo:
- una API back-end Node/express que se ejecuta en localhost que funciona bien cuando se prueba con Postman/navegador
- una aplicación nativa de reacción predeterminada creada y ejecutada a través de Expo. Pruebo esta aplicación desde mi teléfono Android leyendo el código QR que proporciona Expo/metro, servido a través de Tunnel
Comportamiento deseado:
- la aplicación móvil React Native debería poder comunicarse con la API de back-end
Error:
Network Error
at node_modules/axios/lib/core/createError.js:15:17 in createError
at node_modules/axios/lib/adapters/xhr.js:114:22 in handleError
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:609:10 in setReadyState
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:396:6 in __didCompleteResponse
at node_modules/react-native/Libraries/vendor/emitter/_EventEmitter.js:135:10 in EventEmitter#emit
Solicitud de publicación de Axios de React Native (abreviado)
axios.post('http://localhost:5000/user/login', some-data)
Intentos de resolución
- reemplazó 'localhost' con variaciones de 10.0.2.2 y 127*
- conectando a través de Expos (LAN o local en lugar de túnel) pero no se pudo conectar (error de tiempo de espera)
- jugar con la configuración del cortafuegos ufw de Ubuntu (deshabilitar, permitir puerto)
- Ignorarlo todo al instalar Android Studio para emular, pero me dijeron que mi dispositivo no es compatible con SVM o la virtualización de hardware at-x, lo que me llevó a otra madriguera de conejo