En App.js de nuestra aplicación de reacción, creada hace varios años usando create-react-app, verificamos si un usuario ya inició sesión a través de useEffect() que verifica localStorage en busca de un token de autenticación anterior. A veces, nos encontramos con errores. Publicar directamente un error de centinela parece una forma perezosa de publicar sobre este problema, sin embargo, también parece ser la forma más clara y efectiva de articular el problema:
Debido a que estamos usando el operador ternario, presumiblemente el error se está generando para window.localStorage.getItem('auth-token') , es decir, window.localStorage parece ser nulo. Mi plan para solucionarlo es simplemente verificar que window.localStorage no sea nulo:
let token = localStorage ? localStorage.getItem('auth-token') : (window.localStorage ? window.localStorage.getItem('auth-token') : null) Creo que esta solución funcionará bien, aunque no sea la solución perfecta. Mi pregunta principal es ¿por qué localStorage y window.localStorage a veces son nulos? ¿No deberían tener siempre algún valor, incluso si son una cadena vacía? Además, ¿hay una forma más adecuada de obtener auth-token de autenticación de localStorage que me falta aquí? Los operadores ternarios dobles y el uso de window.localStorage como respaldo para lcoalStorage no parecen 100% correctos.