es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué la aplicación de React tiene dos almacenes locales?

He encontrado un comportamiento extraño en mi aplicación React. Por alguna razón, tiene dos almacenamientos locales. Uno en la dirección IP de la aplicación y otro en el dominio de la aplicación. Sospecho que esto sucede porque configuré el dominio como un subdominio que apunta a una IP específica a través del registro de redireccionamiento de URL en la configuración DNS con http://[IP]/?1=2. Cuando intento establecer un elemento de almacenamiento con localStorage.setItem('item', 'value'), la aplicación no lo recoge porque (supongo que es el caso) usa el segundo almacenamiento mientras que el navegador usa el primero por defecto. Otro aspecto extraño es que cuando la aplicación hace window.history.pushState(null, 'title', '?name=val'), no tiene ningún efecto, mientras que si hago lo mismo desde la consola del navegador, funciona bien y la URL se actualiza. Todo funciona bien en localhost – solo hay un almacenamiento y window.history hace lo que se supone que debe hacer.

¿Cómo puedo solucionarlo? ¿Probablemente alguna configuración de npm start? Intenté establecer start: "PORT=80 HOST=subdomain.domain.com react-scripts start" en package.json, pero en este caso la aplicación no se inicia en absoluto.

Cualquier idea es bienvenida. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas de la aplicación React con múltiples almacenamientos locales

    Si te has encontrado con dos almacenamientos locales en tu aplicación React, uno en la IP de la aplicación y el otro en el dominio de la aplicación, podría deberse a un registro de redirección de URL en la configuración de DNS. Esto puede ocasionar problemas al establecer un elemento de almacenamiento con localStorage.setItem('item', 'value'), ya que la aplicación podría estar utilizando el segundo almacenamiento mientras el navegador está utilizando el primero por defecto. Además, window.history.pushState(null, 'title', '?name=val') puede no funcionar como se espera.

    Para solucionar este problema, puedes intentar configurar el script de inicio en package.json con el parámetro HOST con el subdominio correcto de la siguiente manera:

    {
      "scripts": {
        "start": "PORT=80 HOST=subdomain.domain.com react-scripts start"
      }
    }
    

    Esto debería iniciar la aplicación y asegurarse de que está utilizando el subdominio correcto. Si la aplicación no se inicia con este comando, es posible que debas revisar la configuración de DNS y asegurarte de que el subdominio esté configurado correctamente.

    Si sigues experimentando problemas con los almacenamientos locales y window.history, es posible que debas investigar más y, potencialmente, contactar a un experto en React o DNS para obtener ayuda adicional.

Comments are closed.