Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Diferencias entre require() y load()

La require() y load() Los métodos incluyen archivos y módulos en tus scripts para una funcionalidad adicional. Sin embargo, require() y load() difieren en su comportamiento y disponibilidad.

Puedes utilizar los siguientes tipos de scripts con mongosh:

  • mongosh scripts, que pueden ser cualquiera de los siguientes:

    • Código introducido directamente en el REPL.

    • La El archivo mongoshrc.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.

Los métodos require() y load() difieren en disponibilidad según el tipo de script que estés utilizando.

  • En los scripts mongosh, están disponibles tanto require() como load().

  • En los scripts de Node.js, solo está disponible require().

El tipo de script determina cómo especificar las rutas de los archivos con require() o load().

  • En mongosh scripts:

    • 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() acepta cualquiera de los siguientes:

      • 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().

Puede cargar código externo en un archivo de script mongosh, como un paquete npm o un script mongosh independiente.

  • Para cargar un script mongosh desde otro script mongosh, utiliza la variable de entorno __dirname. La variable de entorno __dirname devuelve la ruta absoluta del directorio que contiene el archivo que se está ejecutando.

    Ejemplo

    Para cargar un script mongosh llamado test-suite.js desde otro script mongosh, agregar la siguiente línea a tu script:

    load(__dirname + '/test-suite.js')

    El uso de la variable _dirname para 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étodo require().

    Ejemplo

    Para cargar el módulo date-fns desde un script mongosh llamado test-suite2.js, agrega las siguientes líneas en tu script:

    const localRequire = require('date-fns').createRequire(__filename);
    const fileExports = localRequire('./test-suite2.js'); }

Existen dos estándares de empaquetado para los módulos de Node.js.

Norma de envases
Funciona con require()

CommonJS (CJS)

ECMAScript Module (ES Module)

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:

  • mongosh los scripts pueden utilizar la mongosh API.

  • 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. Puede que muestren comportamientos diferentes cuando se ejecuta el mismo comando en cada tipo de script, como devolver tipos de datos distintos. Por lo tanto, es posible que observes resultados inesperados si ejecutas el código mongosh 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.

Volver

Incluir archivos y módulos

En esta página