La require() Los métodos load() incluyen archivos y módulos en sus scripts para mayor funcionalidad. Sin embargo, los métodos require() y load() difieren en su comportamiento y disponibilidad.
Tipos de scripts en mongosh
Puedes utilizar los siguientes tipos de scripts con mongosh:
mongoshscripts, que pueden ser cualquiera de los siguientes:Código introducido directamente en el REPL.
La archivomongoshrc.js.
Código cargado con el método load().
Scripts de Node.js, es decir, cualquier script cargado con
require(), incluidos los paquetes npm. Estos scripts son siempre archivos.
Disponibilidad de require() y load()
Los métodos require() y load() difieren en disponibilidad según el tipo de script que esté utilizando.
En los scripts
mongosh, están disponibles tantorequire()comoload().En los scripts de Node.js, solo
require()está disponible.
Rutas de archivos para require() y load()
El tipo de script determina cómo especificar las rutas de los archivos con require() o load().
En
mongoshscripts:require()utiliza el estándar Algoritmo de resolución de módulos de Node.jsa partir del directorio de trabajo actual de la shell.load()toma ya sea:Una ruta absoluta, o
Una ruta relativa. Cuando se usa una ruta relativa, la ruta siempre se interpreta en relación con el directorio de trabajo actual del shell.
En los scripts de Node.js,
require()utiliza el algoritmo estándar de resolución de módulos de Node.js, a partir del archivo en el que se llamórequire().
Carga código externo en un script de mongosh
Puede cargar código externo en un archivo de script mongosh, como un paquete npm o un script mongosh separado.
Para cargar un script
mongoshdesde otro scriptmongosh, utiliza la variable de entorno__dirname. La variable de entorno__dirnamedevuelve la ruta absoluta del directorio que contiene el archivo que se está ejecutando.Ejemplo
Para cargar un script
mongoshllamadotest-suite.jsdesde otro scriptmongosh, agregar la siguiente línea a tu script:load(__dirname + '/test-suite.js') El uso de la variable
_dirnamepara especificar una ruta absoluta garantiza que el script separado que se está cargando no sea afectado por factores externos, como el lugar donde se iniciómongosh.Para cargar un script de Node.js desde un script
mongosh, use el métodorequire().Ejemplo
Para cargar el módulo date-fns desde un
mongoshscript llamado,test-suite2.jsagregue las siguientes líneas a su script:const localRequire = require('date-fns').createRequire(__filename); const fileExports = localRequire('./test-suite2.js'); }
Consideraciones de empaquetado de require()
Existen dos estándares de empaquetado para los módulos de Node.js.
Estándar de embalaje | Funciona con require() |
|---|---|
| Sí |
| No |
No puedes require() un módulo ES en mongosh. Si deseas utilizar la funcionalidad de un módulo ES, verifica si existe una versión en CommonJS que puedas usar en su lugar. Para obtener más información, consulta:
Acceso a la API de mongosh
mongoshlos scripts pueden utilizar lamongoshAPI.Los scripts de Node.js no tienen acceso a la API de
mongosh.
Por ejemplo, la variable global db (utilizada para mostrar la base de datos actual) está disponible dentro de los scripts de mongosh. No está disponible dentro de los scripts de Node.js.
Importante
mongosh Los scripts y los scripts de Node.js se ejecutan en diferentes contextos. Pueden mostrar comportamientos distintos al ejecutar el mismo comando en cada tipo de script, como devolver distintos tipos de datos. Por lo tanto, podrías observar resultados inesperados si ejecutas mongosh código dentro de un script de Node.js.
En general, no deberías mantener código específico de mongosh dentro de scripts de Node.js.