Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

438
Visualizações
Typescript + webpack: compruebe la variable que no está definida en el nodo, pero definida en el navegador

Estoy tratando de escribir un paquete para uso de servidor y cliente con la menor modificación necesaria.

Algunas librerías son parte de Node pero no están incluidas en un navegador, otras están disponibles en un navegador pero no en Node.

Usando https://github.com/lmaccherone/node-localstorage por ejemplo, quiero require la biblioteca cuando estoy en Node, pero en un navegador, localStorage ya está disponible.

Me gustaría verificar si localStorage está disponible con una declaración de declaración que se encuentra en https://stackoverflow.com/a/65755447/2875404 para que se vea así:

 declare var localStorage: any | undefined; if (typeof localStorage === "undefined" || localStorage === null) { console.log("need to use Node localStorage") var LocalStorage = require('node-localstorage').LocalStorage; var localStorage = new LocalStorage('./localStorage'); } else { console.log("using Browser localStorage") }

Después de envolver el paquete en el paquete web y, para una prueba, ejecutarlo en un fragmento de código de Chrome, aparece el mensaje "need to use Node localStorage" en la consola. Si edito manualmente el código del paquete web en console.log(localStorage) , en realidad imprime el almacenamiento local (por lo que debe estar allí), además, cuando elimino todo el bloque if (typeof... , el código que accede localStorage parece para correr bien.

¿Qué debo hacer exactamente para que esta función de "decisión híbrida" funcione? ¿Puede esto tener que ver con el paquete web que de alguna manera pone las cosas en un alcance "más profundo" que no tiene acceso a las variables de ventana como localStorage? Pero, ¿por qué es posible imprimir e interactuar con la clase entonces? Estoy confundido.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Como dije en el comentario, puede usar la window global para verificar si está en el contexto del navegador:

 declare var localStorage: any | undefined; if (typeof window === 'undefined') { console.log("need to use Node localStorage") var LocalStorage = require('node-localstorage').LocalStorage; var localStorage = new LocalStorage('./localStorage'); } else { console.log("using Browser localStorage") }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda