Diferenças entre require()
e load()
Nesta página
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
:
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.
Disponibilidade de require() e load()
Os métodos require()
e load()
diferem na disponibilidade dependendo do tipo de script que você está utilizando.
Em
mongosh
scripts,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
mongosh
scripts:require()
usa o algoritmo de resolução de módulo Node.js 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 querequire()
foi chamado.
Dica
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
mongosh
de outro scriptmongosh
, 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
chamadotest-suite.js
de outro scriptmongosh
, 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 ondemongosh
começou.Para carregar um script Node.js a partir de um script
mongosh
, use o métodorequire()
.Exemplo
Para carregar a data-fns de um
mongosh
script chamadotest-suite2.js
, adicione as seguintes linhas ao 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
Os scripts
mongosh
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
Os scripts e os scripts Node.js são executados em contextos diferentes. Eles podem apresentar 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 você executar 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.