Menu Docs

Página inicial do DocsVisualizar & analisar dadosMongoDB Shell

Diferenças entre require() e load()

Nesta página

  • Tipos de scripts no mongosh
  • Disponibilidade de require() e load()
  • Caminhos de arquivo para require() e load()
  • require() Considerações de embalagem
  • Acesso à API mongosh

Os métodos require() e load() incluem arquivos e módulos em seus scripts para funcionalidade adicional. No entanto, require() e load() diferem em seus comportamentos e disponibilidade.

Você pode utilizar os seguintes tipos de scripts com mongosh:

  • mongosh scripts, que podem ser qualquer um dos seguintes:

    • Código inserido diretamente no REPL.

    • O arquivo mongoshrc.js .

    • Código carregado com o método load() .

  • Scripts Node.js, que são quaisquer scripts carregados com require(), incluindo pacotes npm. Esses scripts são sempre arquivos.

Os métodos require() e load() diferem na disponibilidade dependendo do tipo de script que você está utilizando.

  • Em mongosh scripts, require() e load() estão disponíveis.

  • Em scripts Node.js, apenas require() está disponível.

O tipo de script determina como você especifica caminhos de arquivo com require() ou load().

  • Em mongosh scripts:

    • require() usa o algoritmo de resolução de módulo padrão , a partir do diretório de trabalho atual da shell.

    • load() leva:

      • Um caminho absoluto, ou

      • Um caminho relativo. Ao usar um caminho relativo, o caminho é sempre interpretado como relativo ao diretório de trabalho atual do shell.

  • Em scripts Node.js, require() usa o algoritmo de resolução de módulo Node.js padrão , a partir do arquivo em que require() foi chamado.

Dica

Para retornar o diretório de trabalho atual do shell, execute o método pwd() do seu script.

Para alterar o diretório de trabalho do shell, use o método cd() em seu script.

Você pode carregar código externo em um arquivo de script do mongosh , como um pacote npm ou um script do mongosh separado.

  • Para carregar um script mongosh de outro script mongosh , use a variável de ambiente __dirname . A variável de ambiente __dirname retorna o caminho absoluto do diretório que contém o arquivo que está sendo executado.

    Exemplo

    Para carregar um script mongosh chamado test-suite.js de outro script mongosh , adicione a seguinte linha ao seu script:

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

    O uso da variável _dirname para especificar um caminho absoluto garante que o script separado que você está carregando não seja afetado por fatores externos, como o local onde mongosh começou.

  • Para carregar um script Node.js a partir de um script mongosh , use o método require() .

    Exemplo

    Para carregar a data-fns módulo de um mongosh script chamado test-suite2.js, adicione as seguintes linhas ao seu script:

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

Existem dois padrões de embalagem para módulos Node.js.

Padrão de Embalagem
Funciona com require()
CommonJS (CJS)
Sim
ECMAScript Module (Módulo ES)
Não

Não é possível require() um módulo ES em mongosh. Se você deseja usar a funcionalidade de um módulo ES, verifique se há uma versão CommonJS que você pode usar. Para mais informações, veja:

  • mongosh scripts podem usar a API mongosh .

  • Os scripts Node.js não têm acesso à API mongosh .

Por exemplo, a variável global db (usada para exibir o reconhecimento de data center atual) está disponível dentro de scripts mongosh . Não está disponível dentro de scripts Node.js.

Importante

mongosh scripts e scripts Node.js são executados em contextos diferentes . Elas podem exibir comportamentos diferentes quando o mesmo comando é executado em cada tipo de script, como retornar diferentes tipos de dados. Portanto, você pode observar resultados inesperados se executar o mongosh código dentro de um script Node.js.

Geralmente, você não deve manter código específico do mongosh dentro de scripts Node.js.

← Incluir arquivos e módulos externos em scripts