Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Como o Node.js Carrega Módulos | Seção
Fundamentos de Node.js

bookComo o Node.js Carrega Módulos

Deslize para mostrar o menu

Para trabalhar de forma eficaz com módulos no Node.js, é necessário compreender como o Node.js encontra e carrega esses módulos. Esse processo é chamado de resolução de módulos. Quando se utiliza a função require para importar um módulo, o Node.js segue um algoritmo específico para localizar o arquivo ou pacote solicitado. O processo de resolução leva em consideração extensões de arquivos, estrutura de pastas e até mesmo a presença de arquivos especiais como o package.json.

O Node.js verifica primeiro se o módulo solicitado é um módulo nativo, como fs ou http. Caso não seja um módulo nativo, o Node.js trata a string passada para o require como um caminho relativo (iniciando com ./ ou ../), um caminho absoluto ou um nome de módulo. Para caminhos relativos e absolutos, o Node.js tenta resolver o arquivo verificando, na seguinte ordem:

  • Se o arquivo exato existe com o nome fornecido;
  • Se o arquivo existe com a extensão .js adicionada;
  • Se o arquivo existe com a extensão .json adicionada;
  • Se o arquivo existe com a extensão .node adicionada.

Se o caminho apontar para um diretório, o Node.js procurará um arquivo package.json dentro desse diretório. Se encontrar, utilizará o campo main para determinar qual arquivo carregar. Se não houver package.json ou campo main, o Node.js buscará um arquivo index.js, index.json ou index.node dentro do diretório.

Se o módulo for requerido pelo nome (e não por caminho), o Node.js irá procurá-lo nas pastas node_modules, começando pelo diretório atual e subindo na árvore de diretórios até chegar à raiz.

app.js

app.js

copy
Note
Nota

O Node.js faz cache dos módulos após o primeiro carregamento. Isso significa que, se o mesmo módulo for requerido várias vezes, ele será executado apenas uma vez e as chamadas subsequentes retornarão o mesmo objeto em cache. Isso melhora o desempenho e a consistência em toda a aplicação.

question-icon

Preencha as lacunas:
Quando você usa require('./moduleName') no Node.js, o algoritmo de resolução de módulos verifica na seguinte ordem:

  1. Se existe um arquivo chamado moduleName;
  2. Se existe um arquivo chamado moduleName.___1___;
  3. Se existe um arquivo chamado moduleName.___2___;
  4. Se existe um arquivo chamado moduleName.___3___.

Clique ou arraste solte itens e preencha os espaços

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 11

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 11
some-alt