Quiero usar criptografía para obtener un UUID en mi nuevo proyecto de Nodo. Encontré una solución para usar criptografía para eso y descubrí que la criptografía en sí misma ya es una variable declarada sin importarla. Entonces ambos son posibles:
import crypto from 'crypto' const mything = cryptoy también sin la importación solo:
const mything = crypto¿Hay una diferencia?
Si no lo importa, no existe (al menos a partir de Node.js v17.1.0), por lo que sin la import es un error. (Pero vea a continuación). No hay crypto en la documentación de Node de sus globales , y una prueba rápida muestra que la crypto no está definida a menos que la importe.
Si hace node example.js con este archivo, por ejemplo, obtiene undefined :
console.log(typeof crypto);(Pero de nuevo, ver más abajo).
Tenga en cuenta que esto es diferente del entorno del navegador. En el entorno del navegador, crypto es un global predefinido.
Esto puede cambiar en el lado de Node.js, ya que el entorno continúa evolucionando hacia la compatibilidad total con las API web. En algún momento, es posible que se agregue crypto a los globales predefinidos de Node.js. Pero no lo es (todavía). Pero si cambia, será la API criptográfica web, no la del módulo crypto .
ruohola señala que si usa REPL, la crypto está predefinida:
nodo
Escriba ".ayuda" para obtener más información.
> tipo de cripto
'objeto'
> cripto === require("cripto")
verdadero
Como puede ver, el objeto disponible a través de crypto global disponible en REPL es el mismo que el módulo que obtiene de require("crypto") .