Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

127
Views
¿Cómo importar un módulo de nodo VS usar la API del navegador?

En un paquete de TS diseñado para ejecutarse tanto en nodeJS como en un navegador, quiero acceder a la generación aleatoria segura desde crypto.getRandomValues (navegador) o crypto.randomFillSync (nodo).

En package.json , tengo "type": "module" , toda mi biblioteca usa importaciones ES6 (por lo que no se define el requisito).
Utilizo tsc para compilar el paquete de nodos normal y acumularlo para empaquetarlo en un UMD para navegador.

Desafortunadamente, el módulo criptográfico del nodo se debe importar para que se pueda utilizar. La declaración de import no puede "ocultarse" dentro de if , por lo que se bloqueará cuando se ejecute en el navegador.

 if(typeof crypto == "object"){ fillRandom = crypto.getRandomValues } else{ //node import crypto from "crypto" //Err: Cannot use import outside a module (browser) fillRandom = crypto.randomFillSync }

Con commonJS, simplemente podría usar require("crypto") , pero ya me comprometí por completo a usar módulos ESM.

Me imagino que podría cambiar esta parte del código antes de compilar TS para el navegador/nodo, por lo que ambas versiones tendrían el código que tiene sentido en su entorno, pero no sé cómo, parece un poco exagerado.

¿Hay alguna manera?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!