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.
Tipos de scripts no mongosh
Você pode utilizar os seguintes tipos de scripts com mongosh:
mongoshscripts, 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.
Disponibilidade de require() e load()
Os métodos require() e load() diferem na disponibilidade dependendo do tipo de script que você está utilizando.
Em
mongoshscripts,require()eload()estão disponíveis.Em scripts Node.js, apenas
require()está disponível.
Caminhos de arquivo para require() e load()
O tipo de script determina como você especifica caminhos de arquivo com require() ou load().
Em
mongoshscripts:require()usa o algoritmo de resolução de módulo Node.js padrãoNode.js, começando a partir do diretório de trabalho atual do 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 padrão de resolução de módulo Node.js, a partir do arquivo em querequire()foi chamado.
Carregar código externo em um script mongosh
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
mongoshde outro scriptmongosh, use a variável de ambiente__dirname. A variável de ambiente__dirnameretorna o caminho absoluto do diretório que contém o arquivo que está sendo executado.Exemplo
Para carregar um script
mongoshchamadotest-suite.jsde outro scriptmongosh, adicione a seguinte linha ao seu script:load(__dirname + '/test-suite.js') O uso da variável
_dirnamepara especificar um caminho absoluto garante que o script separado que você está carregando não seja afetado por fatores externos, como o local ondemongoshcomeçou.Para carregar um script Node.js a partir de um script
mongosh, use o métodorequire().Exemplo
Para carregar o módulo date-fns de um script
mongoshchamadotest-suite2.js, adicione as seguintes linhas ao seu script:const localRequire = require('date-fns').createRequire(__filename); const fileExports = localRequire('./test-suite2.js'); }
require() Considerações de embalagem
Existem dois padrões de embalagem para módulos Node.js.
Padrão de Embalagem | Funciona com require() |
|---|---|
| Sim |
| No |
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:
Acesso à API mongosh
mongoshscripts podem usar a APImongosh.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 código mongosh dentro de um script Node.js
Geralmente, você não deve manter código específico do mongosh dentro de scripts Node.js.