NodeJS tiene una implementación experimental de crypto.subtle del navegador.
He escrito un módulo Javascript que se ejecuta tanto en el navegador como en NodeJS. Necesita acceso a lo sutil.
Por el momento, cada función que necesita usar subtle
espera la siguiente función al comienzo de la ejecución:
async function getSubtle() { if (typeof window === 'undefined') { // running in NodeJS const crypto = await import('crypto'); return crypto.webcrypto.subtle; } else { // running in a browser return crypto.subtle; } }
Esto funciona, pero es lento y feo, ya que estoy volviendo a importar el código en cada llamada de función (en NodeJS).
Mi proyecto es lo suficientemente simple como para no usar un sistema de compilación. (Uso express y enlace simbólico a los módulos que necesito, por ejemplo, de public/js/modules/foo.mjs
a lib/foo.js
).
¿Puedo reemplazar getSubtle()
con una importación condicional no asíncrona a nivel de módulo? ¿Si es así, cómo?