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 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
mongosh
scripts 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.